Javascript 从父状态到子状态的反应传递数组
我有一个父组件,它持有一个名为nodes的状态,该状态被建立为一个数组。我试图将this.state.nodes传递给子组件,并使该组件将数组作为子组件状态的一部分,但它不起作用。代码如下:Javascript 从父状态到子状态的反应传递数组,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有一个父组件,它持有一个名为nodes的状态,该状态被建立为一个数组。我试图将this.state.nodes传递给子组件,并使该组件将数组作为子组件状态的一部分,但它不起作用。代码如下: <ChildComponent nodes={this.state.graphNodes}/> 但是当我尝试引用它或映射它,或在子组件渲染或返回中使用它做任何事情时,它告诉我它是一个空数组 由于图形节点处于组件状态,我认为它的初始值应该是一个空数组,您正在使用props.nodes在构造函数
<ChildComponent nodes={this.state.graphNodes}/>
但是当我尝试引用它或映射它,或在子组件渲染或返回中使用它做任何事情时,它告诉我它是一个空数组 由于
图形节点
处于组件状态,我认为它的初始值应该是一个空数组,您正在使用props.nodes
在构造函数
处初始化状态,由于constructor
此时在组件的初始化阶段仅呈现一次graphNodes
必须是空数组,因此更改父组件状态后,子组件中的状态将不会更新。这使得图形节点
状态始终为空数组
为什么不直接使用道具
,如果不必更改子组件中的图形节点
值,可以直接从道具
使用它
如果你真的想把
道具
映射到状态
,你必须在componentdiddupdate
生命周期方法中使用合适的条件来实现这一点所有的注释都是死板的。直接使用this.props.nodes而不是尝试将其置于子状态是完美的解决方案。感谢所有回复的人 你称之为超级(道具)子组件构造函数中的代码>?也可能是父组件中的this.state.graphNodes
是异步获取的,因此当您第一次呈现子组件时,它还没有设置。显示一个更完整的子组件代码示例。另外,只需在子渲染函数中使用this.props.nodes
,不管怎样,将proprs
中的内容放置到state
通常是一个错误的选择。最好在孩子的render()
中迭代这个.props.nodes
,谢谢大家的反馈。你们都是对的。。。直接使用this.props.nodes而不是将其置于子组件状态非常有效。我支持直接使用props.nodes的建议。因为js中的数组是一个“对象”,所以您将作为引用而不是副本传递该数组,这意味着您将在父组件和子组件上使用相同的数据集。如果数据更新,我建议将函数/方法传递给子组件,以更改父组件上的状态,并且这些更改也将通过props.nodesThanks Ozzy反映在子组件中!你是对的,我感谢你的帮助。
this.state = {
nodes: this.props.nodes,
links: [],
totalNodes: [],
totalLinks: []
}