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

Javascript “反应”;“提升状态上升”;哲学:如何避免最终导致一个包含所有代码的大型父组件?

Javascript “反应”;“提升状态上升”;哲学:如何避免最终导致一个包含所有代码的大型父组件?,javascript,reactjs,design-patterns,Javascript,Reactjs,Design Patterns,这不是一个非常精确的问题。我想我理解“反应提升状态”范式。据我所知,这是两个同级组件访问各自属性的唯一干净方法 但是这样做,我得到了一个包含所有内容的巨大类:所有子组件属性的数据信息,以及负责更新这些信息的所有函数(负责调用setState)。我不满意的是,我不能再分派到子组件中,这项工作必须与它们相关 我的问题是:如何避免使用react将所有代码集中在父组件中,同时保持良好的干净状态/prop机制?或者我的抱怨可能是错误的?许多人认为直接跳转到redux是个好主意,但事实上,它带来了大量的计算

这不是一个非常精确的问题。我想我理解“反应提升状态”范式。据我所知,这是两个同级组件访问各自属性的唯一干净方法

但是这样做,我得到了一个包含所有内容的巨大类:所有子组件属性的数据信息,以及负责更新这些信息的所有函数(负责调用
setState
)。我不满意的是,我不能再分派到子组件中,这项工作必须与它们相关


我的问题是:如何避免使用react将所有代码集中在父组件中,同时保持良好的干净状态/prop机制?或者我的抱怨可能是错误的?

许多人认为直接跳转到redux是个好主意,但事实上,它带来了大量的计算开销和样板代码

根据经验,您可以简单地将逻辑向上移动,这不仅与子组件相关,也与同级相关


您还应该了解。

将其视为提升状态“足够”。仅将状态提升到可以进行必要的状态共享的点。这有时会是应用程序的顶部,但并不总是如此。将状态提升到根组件不是一个好主意。必要时提升状态。我认为使用redux库管理状态更容易,因为组件可以连接到redux存储来获取数据。您还可以通过调度操作来更新存储。。“最接近的共同祖先”部分很重要,因为像你说的那样,将国家提升到更高的位置会非常麻烦。