Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 在React中掌握组件继承权_Javascript_Reactjs_Structure_Components_Hierarchy - Fatal编程技术网

Javascript 在React中掌握组件继承权

Javascript 在React中掌握组件继承权,javascript,reactjs,structure,components,hierarchy,Javascript,Reactjs,Structure,Components,Hierarchy,我在学习、反应和思考组件的结构。下面的内容让我有点困惑 我们被告知,真相应该只有一个来源 所有者组件应将道具/状态传递给其责任(有些人称为“所有者”)组件 所以,如果我自己的整个应用程序是一个大组件(所有者)和许多责任(所有者)组件,这是否意味着顶级所有者组件将拥有所有的道具和状态。那将是一个巨大的物体 由于Im最初没有使用状态,对道具的任何更改都必须传递给“所有者”&然后该组件再次呈现 显然这是不对的,对吗?如果您能提供任何指导,我们将不胜感激。这一解释有点偏离标准。你的顶级组件不需要是一

我在学习、反应和思考组件的结构。下面的内容让我有点困惑

  • 我们被告知,真相应该只有一个来源

  • 所有者组件应将道具/状态传递给其责任(有些人称为“所有者”)组件

所以,如果我自己的整个应用程序是一个大组件(所有者)和许多责任(所有者)组件,这是否意味着顶级所有者组件将拥有所有的道具和状态。那将是一个巨大的物体

由于Im最初没有使用
状态
,对
道具
的任何更改都必须传递给“所有者”&然后该组件再次呈现


显然这是不对的,对吗?如果您能提供任何指导,我们将不胜感激。

这一解释有点偏离标准。你的顶级组件不需要是一个无所不知的庞然大物,仅仅因为道具和状态之间的关键区别。任何组件都可以自由选择和控制自己的状态,并将其传递给其子组件。然而,理想情况下,组件的道具不应保存在其状态变量中,因为这正是导致双重性的原因,并违反了单一真理源范式。道具不属于组件,而是属于发送道具的祖先。相反,组件将其状态作为道具传递给其子组件是很自然的,也是人们期望的


你会发现,没有状态你做不了多少事情,除非你的应用程序主要显示静态内容。所以当你们开始处理状态时,保持状态在它所属的位置。即使使用Flux,也有办法保持状态与它所属的组件相关。

这就是为什么一个非平凡的React应用程序需要或确实需要它。感谢@Hazardous,我的困惑是,如果所有组件最终都只有一个父级,那么很明显,父级就是入口点。我正在用一个粗略的例子更新帖子。示例中的数据模型不是分层的,因此不需要从顶部组件向下发送。ParentComponent完全可以接受带有prop染色体3硬编码的ChildComponent。理由是,祖父母不知道其跳过级别的后代将携带什么染色体。它只能控制其子代的染色体。在Redux上的旁注中,状态确实在一个对象中,但在那里,顶级组件也不会将其“分发”下来。内部组件根据需要使用不同的减速器。我不同意“硬编码”部分,这会使其静止,如果我想通过道具怎么办。我不能直接调用它的渲染函数,所以道具必须通过祖父母传递。我同意你关于等级制度的第一点。这里是我发布的另一个问题,Michelle在顶层维护多个组件方面有很好的观点,应用程序结构不一定需要是金字塔。在您链接的示例中,它目前是硬编码的。染色体3被路由到childcomponent。它可能来自祖父母或父母,也不重要。由于整个树是在另一个代理顶级组件中呈现的,所以祖父母对其子代没有发言权:)。