为什么mapStateToProps将重新渲染,这意味着在Component中调用render()

时间:2018-12-19 08:52:57

标签: reactjs redux react-redux

  • 我认为在react框架中,视图随Component的state而变化,

  • 所以我认为当mapStateToProps运行时,组件会得到一个新的store's state

  • 表示组件更改的props

  • 根据react框架,在这种情况下,除非调用this.setState,否则视图不会重新渲染

1 个答案:

答案 0 :(得分:0)

我举一个例子。

1):首先加载组件

2)您在组件上进行了更改,从而更改了该组件的Redux状态

现在,如果您想查看与此组件关联的新道具,则可以在“ render()”方法中看到它们。这是因为如果更改了道具,则react组件将自动重新渲染(如Peter Ambruzs所述)。问题是,如果您想在渲染功能之外使用这些新道具,则必须更新道具(或您的本地状态)。

在这种情况下,您应该使用getDerivedStateFromProps(新组件WillReceiveProps),例如:

constructor(props) {
  super(props);
  state = {
    stateExample: this.props,
  }
}

static getDerivedStateFromProps(nextProps, prevState) {
  if(nextProps.stateExample !== prevState.stateExample) {
    return { stateExample: nextProps.stateExample }
  } else return null;
}

这将使用您刚刚在redux商店中更改的新道具来更新您的本地状态。