【发布时间】:2020-03-11 01:00:28
【问题描述】:
我有一个 <Container /> 组件,它将 <Card /> 列表作为子项:
<Container>
<Card />
<Card />
</Container>
<Card /> 有一个布尔状态 openExpansion,一旦更改,所有兄弟<Card /> 将更改为相同的值。实现这一目标的最佳方法是什么?
显然我可以将openExpansion 设置为<Container /> 状态并将其注入每个<Card />。我也不想使用 redux store,因为我不知道 <Container /> 会在哪里被调用。但是有没有办法让openExpansion 保持<Card /> 状态,同时达到同样的效果?
谢谢!
【问题讨论】:
-
听起来您已经知道可以说是最好的解决方案是什么,将 bool 移动到父状态。但是你能告诉我们为什么你不想这样做吗?
-
@ChrisG 不,我不知道最好的解决方案,这就是讨论的重点。
-
您在您的问题中提到了最佳解决方案。再次:将 bool 移至父级,就像这里推荐的至少三个答案一样。如果您不想这样做,请告诉我们为什么不这样做。
-
@ChrisG 因为通过这种方式,
将始终依赖从 传递的 props,并且它最好称为 而不是更通用的 组件。有一个解决方案来实现通用性会很好。但也许没有办法做到这一点。 -
如果没有某种外部包装器(父组件、上下文、redux 等),子级无法相互通信。
标签: javascript reactjs react-hooks react-props