使用Redux作为初始组件状态

时间:2017-12-18 14:13:36

标签: javascript reactjs react-redux

我使用Redux作为用于编辑当前所选项目名称的组件中的初始状态(包含这些属性:" name"," selected" )。它被用作本地初始状态,因为我只想在单击保存按钮(我还没有实现)时更新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更新)的引用将丢失?但是我怎么能纠正这个问题呢?

1 个答案:

答案 0 :(得分:1)

请记住,constructor只被调用一次,而您的输入是受控制的组件,由您所在州指挥。

您需要做的是根据redux状态更新组件状态,以便在componentWillReceiveProps方法中更新。

请注意:使用道具更新状态被视为反模式。