ReactJS/Preact 如何处理偶发的组件卸载错误?
How to handle sporadic component unmount error with ReactJS/Preact?
出于学习目的,我正在使用 Preact 构建 ReactJS SPA。每隔一段时间,我使用的库 (react-frame-component
) 中的一个组件在卸载时会抛出异常,这会破坏应用程序的其他部分。这是一个相当偶发的错误,因此我无法创建一个重现它的测试用例。
我确实知道 error boundaries,并尝试将有问题的 <Frame>
组件封装在一个组件中,但并没有什么不同。具体来说,我得到的错误信息是
Uncaught (in promise) TypeError: Cannot read property 'body' of null
at Frame.getMountTarget (Frame.js:112)
at Frame.componentWillUnmount (Frame.js:95)
at unmountComponent (preact.js:355)
at unmountComponent (preact.js:358)
at recollectNodeTree (preact.js:198)
at removeChildren (preact.js:208)
at recollectNodeTree (preact.js:201)
at removeChildren (preact.js:208)
at recollectNodeTree (preact.js:201)
at removeChildren (preact.js:208)
我不确定如何自己捕获此错误,甚至无法正确调试它。任何帮助,将不胜感激。
通过制作 "custom" iframe 解决了:
let src = 'iframe src here';
<iframe id="my-awesome-frame"
srcdoc={src} sandbox="allow-same-origin">
</iframe>
出于学习目的,我正在使用 Preact 构建 ReactJS SPA。每隔一段时间,我使用的库 (react-frame-component
) 中的一个组件在卸载时会抛出异常,这会破坏应用程序的其他部分。这是一个相当偶发的错误,因此我无法创建一个重现它的测试用例。
我确实知道 error boundaries,并尝试将有问题的 <Frame>
组件封装在一个组件中,但并没有什么不同。具体来说,我得到的错误信息是
Uncaught (in promise) TypeError: Cannot read property 'body' of null
at Frame.getMountTarget (Frame.js:112)
at Frame.componentWillUnmount (Frame.js:95)
at unmountComponent (preact.js:355)
at unmountComponent (preact.js:358)
at recollectNodeTree (preact.js:198)
at removeChildren (preact.js:208)
at recollectNodeTree (preact.js:201)
at removeChildren (preact.js:208)
at recollectNodeTree (preact.js:201)
at removeChildren (preact.js:208)
我不确定如何自己捕获此错误,甚至无法正确调试它。任何帮助,将不胜感激。
通过制作 "custom" iframe 解决了:
let src = 'iframe src here';
<iframe id="my-awesome-frame"
srcdoc={src} sandbox="allow-same-origin">
</iframe>