我有一个接收变量作为道具的组件。getDerivedStateFromProps() 是典型的,这意味着当 nextProps.someProp 不等于 prevState.someStateVar 时,该 prop 被分配给状态变量。
我还有一个受控元素——一个与同一个状态变量相关联的 HTML 文本输入元素。
问题是,当我通过受控元素更改状态变量时, getDerivedStateFromProps() 执行并将值设置回之前收到的道具。
作为一个 React 新手,我不明白为什么会发生这种情况。上述动作只应在收到新的 prop 值时发生,就像名称“nextProps”所暗示的那样。
请建议如何获得所需的行为:
- 使用 prop 设置初始状态
- 让我的受控元素(html 输入标签)设置状态变量的下一个值
- 如果收到新的 prop 值,则将其分配给状态变量的下一个值