使用Redux作为初始组件状态
我使用Redux作为用于编辑当前选定项目(包含这些属性:“name”和“selected”)的名称的组件中的初始状态。它用作本地初始状态,因为我只想在点击保存按钮(我还没有实现)时更新Redux全局状态。使用Redux作为初始组件状态
constructor(props) { super(props)
this.state = {
item: this.props.item
}
}
我的渲染功能包括编辑名称输入:
<TextField id={"name"}
value={this.state.item.name}
onChange={e => this.updateName(e.target.value)}
/>
的updateName()函数是:
updateName = (value) => { var newItem = this.state.item
newItem.name = value
this.setState({item: newItem})
}
在这里,我可以选择的项目,对默认的值在所选项目的名称后面输入更改(当我选择一个项目时,Redux的状态会更新,组件的状态和输入中的文本也会更新)。一切都按照计划进行。
当我写入输入时,写入的文本会改变,但是选择项目的操作不会再更新输入的文本(它应该跟随从Redux中选择的项目的名称,就像我输入文本之前一样)。
是否因为使用this.setState()更新组件状态后,对this.props.item的引用(以及后来的Redux更新)就会丢失?但是我怎样才能纠正这个问题呢?
回答:
请记住,constructor
仅被调用一次,而您的输入是由您的状态命令的受控组件。
您需要做的是根据redux状态更新组件状态,以便在componentWillReceiveProps
方法中对此进行更新。
请注意:使用道具更新状态被认为是反模式。
以上是 使用Redux作为初始组件状态 的全部内容, 来源链接: utcz.com/qa/264019.html