【发布时间】:2018-03-14 10:58:57
【问题描述】:
我有一个父 jsx 组件,其中包含 2 个不同的 jsx 组件。 一个组件是一个按钮,另一个是一个 div,当您单击它时会自行打开和关闭(它有一个单击处理程序和打开或关闭状态)。 我现在想为按钮添加打开和关闭 div 的功能。 实现这一点的唯一方法是从父组件向下传递一个处理函数到按钮,将 div 的打开和关闭状态移动到父组件,然后将状态作为 props 向下传递给 div?我问的原因是这个特定的 div 组件用于许多不同的组件,删除打开和关闭状态会影响许多不同的父组件。
【问题讨论】:
-
您可以向它传递一个 isOpen 道具,然后在 componentWillReceiveProps 上设置组件内部的状态。这是一种将功能留给组件但也通过它的父级影响它的方法。
-
您的用例是提升状态的完美案例,即使它可能需要在您的应用程序中进行一些更改,您也应该继续使用它。检查这个问题何时提升状态stackoverflow.com/questions/46594900/…
-
"实现这一点的唯一方法是从父组件向下传递一个处理函数到按钮,将 div 的打开和关闭状态移动到父组件,并将状态向下传递给 div作为道具?”不,您可以按照@MatanBobi 的建议使用该策略来允许外部操作