反应全局状态更新本地状态

时间:2019-04-05 01:12:41

标签: reactjs react-redux

在全局状态更新后,我需要更新本地状态。

我尝试了mapStateToProps,但这只会将全局状态映射到组件中,而不会更新本地状态。

请参考图片以查看代码。

在更新mapStateToProps之后,应该将selected_smsf_member上的值解析为用于创建表单的本地状态。

我也乐于接受更好方法的建议。基本上,我想做的是在先前的组件上显示所选成员的详细信息。

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以看到mapStateToProps,它的名字说明了一切,它将状态映射到道具,您可以在道具中访问其变量,例如this.props.selected_smsf_member中的component。如果您仍然想使用getDerivedStateFromProps()更新本地状态,请先阅读此博客:https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

答案 1 :(得分:1)

您可以利用getDerivedStateFromProps。您可以检查道具并在道具改变时从道具中获取状态。不过有几点注意事项:

  • 您应将state.memberDetailsForm初始化为假值,并检查getDerivedState函数中的值,否则每次道具更改时都会派生您的状态。
  • 我不知道与您的代码的确切映射,所以不要只复制 下面的示例,并期望它能正常工作。

实施此方法将为您提供所需的输出。

static getDerivedStateFromProps(props, state) {
  if (!state.memberDetailsForm) {
    return { memberDetailsForm: props.selected_smsf_member }
  }
}