使用Redux作为初始组件状态

问题描述 投票:0回答:1

我正在使用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更新)的引用就会丢失吗?但是我该如何纠正这个问题呢?

javascript reactjs react-redux
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.