我正在使用父组件中的模式子组件。模态的OnSubmit,它更新在我的父组件中呈现的redux状态。 (在模式后面)。
我的子组件(模态)成功更新了redux存储。 当我关闭模态时,parent具有旧的渲染内容。
我想在关闭模态时通过更新的redux状态来更新父组件的渲染内容。 在react-redux中执行上述方案的方式是什么?
答案 0 :(得分:1)
您可以将代码放入codesandbox中吗?
从您的描述看来,您的父组件似乎是使用初始正确值首次呈现的,但是在redux存储更新状态后未能重新呈现新的值。
当您要更新的值没有直接链接到redux存储时,通常会发生这种情况。
如果您不明白我刚才所说的话,请举一个例子:
在父组件中,您可能具有以下代码:
class Attribute{
String _attributerowid;
String _grouprowid;
String _attributename;
String _weight;
}
List<Attribute> get attrlist => _attrlist;
在此示例中,您初始化了第一个渲染的状态,但是在第一个渲染之后,父组件与redux存储没有关系,它成为不受控制的组件。
Ertan用 class Parent extends Component{
state={name:this.props.name}
render(){
<input value={this.state.name} onChange=
{this.onChange.bind(this)} />
}
}
说。很多人这样做。他们从外部道具初始化本地状态,然后使用componentWillReceiveProps
更新本地状态。
但是不建议这样做,并且此生命周期方法现在已弃用,因为它可能导致潜在的错误。有关更多信息,请参见此处:https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html
因此,解决您的问题的方法实际上非常简单:
请勿在本地状态下初始化值。将值直接链接到redux存储。例如:
componentWillReceiveProps
希望有帮助。 谢谢。
答案 1 :(得分:0)
如果出于某种原因要在状态中保存redux数据,则只需使用componentWillRecieveProps(newProps)
方法,然后更新状态。否则,您仍然可以使用componentWillRecieveProps
来检查商店是否成功更新。