【发布时间】:2021-01-16 01:59:09
【问题描述】:
我有一个组件,我需要更新父级的值(好的),但是如果用户更改输入的值(子级/功能性组件),我需要设置这个值而不传递给父级重新渲染孩子们。
看这个例子: https://codesandbox.io/s/boring-thunder-qvibf?file=/src/App.js
按照以下步骤操作:
- 为输入设置一些值并查看控制台日志
- 点击按钮,输入接收新值
- 再次更改输入值
- 单击按钮,为什么不能再次工作并设置值输入?
我需要独立的孩子(功能组件或类组件),有时我需要使用parent来设置children值,还要保持children改变自己的状态,这可能吗?
【问题讨论】:
-
这是一个在父节点中保持状态并将控制权传递给子节点的示例:How can I pass state from page to component and back to page?
-
嘿@pichard,谢谢回复,但在这个例子中,状态是由父级控制的,我需要保持由父级和子级控制,没有传递回调给父级重新渲染是可能的孩子们?谢谢。
-
我首先要说的是,从 props 设置状态是一种反模式,最好在一个地方设置/处理状态。但是您的示例不起作用的原因是第一次单击按钮会更改
valueParent并因此重新呈现,但是任何后续单击不会更改valueParent的值和所以不要触发渲染。 (如果您在setValueParent()调用中添加时间戳或其他新值,它会按预期工作)
标签: javascript reactjs react-native react-props