使用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

回到顶部