反应成分组成但令人困惑

react component composition but confusing

所以我有一个代码片段 here basically presenting the idea Dan 提到的是提升内容以响应自然地提高性能并编写更清晰的代码。 在 InputField 组件中,Button 总是渲染,这不是我想要的行为,它应该跳过渲染 Button 组件。所以它应该做的是跳过渲染,因为 Button 是 inputfield 的子道具,如果子道具没有改变, React 将跳过渲染。

Dan 解释的类似概念示例:“当颜色改变时,ColorPicker 重新渲染。但它仍然具有上次从 App 获得的相同子属性,因此 React 不会访问该子树”

所以我这里很疑惑,是不是多个children props的问题,因为InputField有value,onChange,children props,其中一个改变了,react决定更新其他? 我有一个例子 here 有点证明这不是多个道具的问题。

编辑:跟进问题,在现实世界中,顶级组件必须具有各种 useState、状态更新等。这是否意味着“提升内容”(组件组合)在现实世界中不实用?只是从节省一些渲染算力的角度来看。 (我们知道它还有其他好处,比如帮助进行一些道具钻探)是否有任何真实世界的实现、代码示例??

感谢@Jacob Smit 的评论。解决了我的问题。 我的 Button 组件在组件结构中仍然是低两层,'lift contents up' 方法是将代码中的 content(component) 向上提升,这样当您在较低的组件中设置 State() 时,它不会影响该内容(component).so 下层的组件保留了必须向下传递的 props。 对于这里,正如 Jacob 所说,我的 setState() 正在触发 Button 和 InputField 的重新渲染,因此 Button 将被渲染。