父组件如何重新呈现由其子模式更新的redux状态?

时间:2019-04-10 09:59:24

标签: reactjs react-redux material-ui

我正在使用父组件中的模式子组件。模态的OnSubmit,它更新在我的父组件中呈现的redux状态。 (在模式后面)。

我的子组件(模态)成功更新了redux存储。 当我关闭模态时,parent具有旧的渲染内容。

我想在关闭模态时通过更新的redux状态来更新父组件的渲染内容。 在react-redux中执行上述方案的方式是什么?

2 个答案:

答案 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来检查商店是否成功更新。