Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从父状态到子状态的反应传递数组_Javascript_Arrays_Reactjs - Fatal编程技术网

Javascript 从父状态到子状态的反应传递数组

Javascript 从父状态到子状态的反应传递数组,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有一个父组件,它持有一个名为nodes的状态,该状态被建立为一个数组。我试图将this.state.nodes传递给子组件,并使该组件将数组作为子组件状态的一部分,但它不起作用。代码如下: <ChildComponent nodes={this.state.graphNodes}/> 但是当我尝试引用它或映射它,或在子组件渲染或返回中使用它做任何事情时,它告诉我它是一个空数组 由于图形节点处于组件状态,我认为它的初始值应该是一个空数组,您正在使用props.nodes在构造函数

我有一个父组件,它持有一个名为nodes的状态,该状态被建立为一个数组。我试图将this.state.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: []
}