Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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_Reactjs_React Hooks - Fatal编程技术网

Javascript 子组件中反映(递归)父组件的计算

Javascript 子组件中反映(递归)父组件的计算,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,假设我有主父组件A。 它有两个子组件B和C,而C组件本身是一个父组件,它也有两个子组件D和E 所以,若我改变E组件中的计算,那个么它应该在直接父级C中即时更新,也应该在父级A中更新 那么,什么样的递归方式才能完全满足我的需求呢?你很幸运-React就是为解决这个问题而设计的(除其他外)。React为您提供了两种方式:道具和状态。道具是从一个组件传递到另一个组件的数据;它们是不变的。状态就像单个组件的内存缓存,可以作为道具传递给子组件。React对这些不可变属性的重新分配进行“React”。任何

假设我有主父组件A。 它有两个子组件B和C,而C组件本身是一个父组件,它也有两个子组件D和E

所以,若我改变E组件中的计算,那个么它应该在直接父级C中即时更新,也应该在父级A中更新


那么,什么样的递归方式才能完全满足我的需求呢?

你很幸运-React就是为解决这个问题而设计的(除其他外)。React为您提供了两种方式:道具和状态。道具是从一个组件传递到另一个组件的数据;它们是不变的。状态就像单个组件的内存缓存,可以作为道具传递给子组件。React对这些不可变属性的重新分配进行“React”。任何重新指定都将导致组件的更新重新呈现

有两种主要的解决方案-经典的反应方式和通过共享状态。经典的反应方式是将数据和计算存储在父组件中,并将回调传递给将执行计算的子组件。即:

A类扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
编号:0,
};
}
设置编号(编号){
this.setState({number});
}
render(){


  • 我看到了你的评论(作为对文章的编辑)。将来,如果您发表评论而不是编辑,则更容易做出响应。您的评论是,您需要一种在DOM中即时反映深层次更改的方法。您可以使用我的回答中的任何一种模式。或者将数据和更改数据的函数传递给子、孙、曾孙等,或者构建共享状态。使用第一个模式的代码示例。如果选择创建共享状态,请选择一个解决方案(React-Context、Redux、Mobx…)如果你被卡住了,可以单独问一个问题。我已经为同一个问题创建了新的问题链接,希望如此,我可以用图片图表向你理解我的问题。这是同一个问题的新问题链接