取回数据并恢复相同数据时,redux状态会发生变化吗?

时间:2018-08-20 11:19:10

标签: redux

在redux中,如果我获取数据并假设我返回相同的数据,它将触发componentDidUpdate吗?我能否假设以前的道具和当前的道具不一样,即使获取的数据与以前的数据相同?

1 个答案:

答案 0 :(得分:0)

是,不是。

shouldComponentUpdate仅使用浅表比较,基本上对propsprevProps进行严格的相等性检查。

这意味着:

如果您的道具(通过mapStateToProps)是基本类型-字符串,数字,布尔值-那么如果Redux返回相同的值,则不会调用componentDidUpdate

如果它们很复杂-对象,数组等-即使数据相同,也会调用componentDidUpdate。这是因为{ foo: 'bar' }!== { foo: 'bar' }。您可以加入shouldComponentUpdate并自己检查相等性以防止这种情况发生。例如,您可以执行以下操作:

shouldComponentUpdate(nextProps) {
   if (JSON.stringify(nextProps.foo) === JSON.stringify(this.props.foo)) {
      return false;
   }
   return true;
}

您的实际实施应考虑可能/可能不会更改的其他道具。