我正在尝试调试很少重现的bug(每几十次尝试一次(。
我在render
呼叫中,想从那里了解尽可能多的信息:
- 是什么原因导致重新发送:
forceUpdate
、setState
或props
发生更改 - 如果是
props
的更改,是哪个组件启动了重新发布器链:我的意思不是父级渲染的事实,而是父级渲染链中使用了setState
或forceUpdate
的顶部组件,因此导致了它自己和下面的整个树(包括我当前所在的组件(的重新发布
保证所有组件都是类组件(不起作用(,我使用的是react 16.4.2,包括不推荐使用的生命周期方法(如果它很重要的话(。上下文也有一些用法。
我该怎么做?注意,我问的是调试技术,而不是修复我的具体错误。
如果您的组件是一个纯组件-extends React.PureComponent { ... }
,那么您实际上不必关心整个重新渲染链,因为只有在道具发生更改(从链或从redux存储(时,它才会重新渲染。
如果父级状态已更改或父级基本上已重新渲染,则不会重新渲染。
但是,它仍然会重新渲染——正如我上面提到的那样——如果道具在组件更新或调用forceUpdate
函数的内部更改了或状态。
如果您没有在组件内部调用forceUpdate
,或者没有更新状态,问题可能与道具有关。
例如,您可以使用componentDidUpdate
,只需将prevProps
与this.props
进行比较,然后检查哪一个道具发生了更改。
尽管如此,您也可以查看https://www.npmjs.com/package/@做得好的软件/你为什么渲染包,它可能对你有帮助。