在redux中,如果我获取数据并假设我返回相同的数据,它将触发componentDidUpdate吗?我能否假设以前的道具和当前的道具不一样,即使获取的数据与以前的数据相同?
答案 0 :(得分:0)
是,不是。
shouldComponentUpdate
仅使用浅表比较,基本上对props
与prevProps
进行严格的相等性检查。
这意味着:
如果您的道具(通过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;
}
您的实际实施应考虑可能/可能不会更改的其他道具。