繁体   English   中英

React componentDidUpdate:检查是否状态或道具更改导致更新?

[英]React componentDidUpdate: check wether state OR props change caused the update?

我有一个列表组件,其中有很多条目来自Redux商店的道具。 条目将进行转换和过滤,并置于componentDidUpdate的状态。 但是,当组件的内部状态更改时,也会调用此函数。

因此,我现在正在检查每个状态更改(如果道具的条目已更改)。 对我来说,这似乎没有必要,因为有时只有一个条目是不同的,整个列表需要与前一个列表进行比较。

我怎样才能只为道具使用诸如componentDidUpdate类的东西?

我考虑过使用getDerivedStateFromProps()但是它说

此方法适用于状态依赖于道具随时间变化的罕见用例。

这对我的用例不利吗? 我只是不认为这是难得的。

然后他们给出建议使用记忆来解决此类问题。 但是,据我所知,记忆化框架仍然必须检查道具的差异。

您可以使用shouldComponentUpdate(nextProps,nextState)来比较道具

使用shouldComponentUpdate()可以让React知道组件的输出是否不受当前状态或道具更改的影响。 默认行为是在每次状态更改时重新呈现,并且在大多数情况下,您应该依赖默认行为。

当接收到新的道具或状态时,在渲染之前应调用shouldComponentUpdate()。 默认为true。 初始渲染或使用forceUpdate()时不会调用此方法。

一旦安装周期完成,shouldComponentUpdate()就会调用一次,而不是在渲染之前先调用componentWillMount()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM