Chr*_*ova 8 javascript reactjs react-16
所以16.4"修复了"getDerivedStateFromProps中的一个错误,现在它在道具更改和状态更改时被解雇了.显然这是有意的,来自这篇文章:https://github.com/facebook/react/issues/12898.但是对我来说,在州内保存以前的道具是一个重大的过度杀伤,所以我问是否有人在处理这样的案件时做了一个程序:
class Componentche extends React.Component {
state = {
valuesForInput: {
input1: ''
}
}
static getDerivedStateFromProps(props, state) {
if (props.someInitialValuesForInput.input1 !== state.valuesForInput.input1) {
return {
valuesForInput: {
...state,
input1: props.someInitialValuesForInput.input1
}
}
}
return state;
render () {
<Input value='valuesForInput.input1' onChange='(e) => setState({valuesForInput: {...this.state, input1: e.target.value }})'
}
}
Run Code Online (Sandbox Code Playgroud)
所以在上面这种情况下,我永远不会改变输入,因为getDerivedStateFromProps将在接收的新道具和setState触发器上执行,我的条件永远不会是假的.
那么处理这种情况的正确方法是什么?我是否需要在州内保留旧道具并将其用于条件?
我刚从React看到这篇文章,但他们没有提供可行的替代方案.
谢谢你的帮助!
处理此类问题的主要思想始终是使用一个事实来源。
getDerivedStateFromProps实际上他们提供了 2 个推荐的解决方案,但在那篇博客文章中根本没有使用:
以及 2 个替代方案:
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |