我有一些奇怪的行为,当我从父母传播.map()
的结果时,这个.props.kids
正在转换为一个对象。
例子:
const items = [
{ id: 1, name: "Name1" },
{ id: 2, name: "Name2" }
].map((item) => {
return (
<DropdownMenu_listItem key={item.id} item={item} />
);
});
render() {
return (
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
{...items}
</DropdownMenu>
);
}
// DropdownMenu.js
render() {
console.log(this.props.children); // {0: {…}, 1: {…}}
return (
// ...
);
}
奇怪的是,当我省略. map()
并直接传递元素时,它们在this.props.children
中显示为预期的数组:
render() {
return (
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
<DropdownMenu_listItem item={{...}} />
<DropdownMenu_listItem item={{...}} />
</DropdownMenu>
);
}
// DropdownMenu.js
render() {
console.log(this.props.children); // [{…}, {…}]
return (
// ...
);
}
如果能深入了解为什么会发生这种情况,我们将不胜感激。
在我的情况下,作为attr将起作用
以前
function Foo(props) {
return <Bar> {...props} </Bar>
}
之后
function Foo(props) {
return <Bar {...props}> </Bar>
}
{… item}
在DropdownMenu.js
中作为子级传递。
它可以作为this.props.children
这个.props.子
可以是数组或对象,这取决于你如何渲染子元素。
就你而言
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
{...items}
</DropdownMenu>
项是一个数组。正如我们所知
array is also type of object in javascript
with key equal to element's index and value is element itself
{… item}
:这将作为对象传递,键作为元素索引,值等于数组元素。
要解决您的问题,您应该不使用spread运算符来传递它。
< code>{items}:这将作为数组传递。
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
{items}
</DropdownMenu>
这并不是因为地图,你得到的孩子作为对象,而是因为你使用的项目蔓延运营商
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
{...items} {/*spread operator here */}
</DropdownMenu>
既然map项目之后是一个使用{… item}
的数组,因为您使用{}
包装扩展运算符的结果,如果您编写{item}
,那就可以了
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
{items}
</DropdownMenu>
我在React中有一个名为“app”的父组件,它用HighCharts实现呈现一个“卡路里”子组件。 以下是我的完整代码: 谁能帮我做错了什么?
因此,我想向附加到组件的任何子级添加某些样式。假设父组件称为,子组件称为。在我正在尝试以下方法:- 上述方法对我不起作用。我想知道为什么。还有没有一种方法可以让我在孩子们之间绘制地图,并将他们包装在一个新的组件中?像这样的东西;
问题内容: 通过回调函数将数据从子级传递到父级组件,但是不起作用。我在这里做错了什么?将数据从子级传递到父级组件-反应-通过回调函数 https://codepen.io/silentarrowz/pen/GEMQEP?editors=0010 这是代码 问题答案: 有几个问题。 1)你必须绑定 2)是异步的,因此不能保证在传递给时将其设置为所需的值。你可以做 要么 解决该问题。
我正在尝试设置一个使用React的页面。该页面有一个下拉菜单组件,它应该触发父级中的状态更新。我尝试了以下几个例子,但没有任何效果。以下是我尝试过的两种方法的简化示例: > 将回调作为更新父状态的道具传递给子节点: }); 这始终显示“失败”,而不是“1”或“2”。 让父级使用onChange而不是回调获取下拉菜单的值。 }); }); 如果我尝试渲染状态,我可以在下拉组件中看到状态更改,但父级没
我正在使用 VUE JS,我想有一组复选框,如下所示。当有人单击主复选框时,应选中该复选框下的所有复选框。请找到附图供您参考 为了实现这个场景,我使用了两个主要组件。当有人单击某个组件时,我将该组件添加到selectedStreams数组。所选流数组结构类似于下面的结构 当我单击标题复选框时,我正在触发功能 单击全部并尝试更改选定的流[keyv]。 但此操作不会触发子组件,并自动选中该复选框。 我
问题内容: 我有两个组成部分: 第一个是父组件,它是通常的React组件。 第二个是孩子,它是功能组件。 我想将 Titles 的值(处于子状态)传递给父Component。这是我的 子组件 代码: 这是我的 父组件 : 这看起来很容易,但这是我第一次使用功能组件。你能帮我吗 ? 问题答案: React就是关于在组件树中向下流动的数据。如果您希望能够显示和/或修改彼此之间的共享状态,则应提升状态并