调试反应组件重新应答器



我正在尝试调试很少重现的bug(每几十次尝试一次(。

我在render呼叫中,想从那里了解尽可能多的信息:

  • 是什么原因导致重新发送:forceUpdatesetStateprops发生更改
  • 如果是props的更改,是哪个组件启动了重新发布器链:我的意思不是父级渲染的事实,而是父级渲染链中使用了setStateforceUpdate的顶部组件,因此导致了它自己和下面的整个树(包括我当前所在的组件(的重新发布

保证所有组件都是类组件(不起作用(,我使用的是react 16.4.2,包括不推荐使用的生命周期方法(如果它很重要的话(。上下文也有一些用法。

我该怎么做?注意,我问的是调试技术,而不是修复我的具体错误。

如果您的组件是一个纯组件-extends React.PureComponent { ... },那么您实际上不必关心整个重新渲染链,因为只有在道具发生更改(从链或从redux存储(时,它才会重新渲染。

如果父级状态已更改或父级基本上已重新渲染,则不会重新渲染。

但是,它仍然会重新渲染——正如我上面提到的那样——如果道具在组件更新或调用forceUpdate函数的内部更改了状态

如果您没有在组件内部调用forceUpdate,或者没有更新状态,问题可能与道具有关。

例如,您可以使用componentDidUpdate,只需将prevPropsthis.props进行比较,然后检查哪一个道具发生了更改。

尽管如此,您也可以查看https://www.npmjs.com/package/@做得好的软件/你为什么渲染包,它可能对你有帮助。

最新更新