不包括代码还没有,我想知道是否有人已经遇到了一个问题,即你:React组件中的错误导致应用重新呈现,导致无限循环。为什么?
- 具有被包裹在
connect
,在我的情况下,组件apollo-client
- 有子组件也裹在
connect
是做一个派遣componentWillMount
- 抛出一个错误的子组件
- 获取一个无限循环
我所处的情况是,任何引发错误的孩子都会导致父组件再次运行render
,并且所有孩子似乎都运行componentWillMount
,但不运行componentWillUnmount
。
错误未记录,直到调用堆栈溢出才出现在控制台中。
这会导致它们全部重新连接到Redux,调度该操作以及再次抛出错误,因为它们会再次挂载,从而导致该循环。
我可以尝试repro,但这需要相当多的时间,只是想知道是否有人遇到类似的问题,可以提供某处寻找。
没有使用阿波罗,不能说我认识到这个问题。但出于调试的目的,我可能会尝试在再次分派动作之前在'componentWillMount'内部进行一些检查,并查看是否可以打破循环,并希望错误不会以这种方式丢失。或者在'componentWillMount'中使用断点,以便您可以随时停止它。并使用像Redux Devtools这样的工具来查看已发送的操作,以及它们是否包含预期的有效负载等。https://github.com/zalmoxisus/redux-devtools-extension – jonahe