0
我已经在写了下面的函数来呈现一个错误页面,当顶层容器我希望呈现遇到错误:为什么ReactJS不捕获子组件的呈现异常?
function unsafeRender(callback) {
try {
var renderedComponent = callback();
return renderedComponent;
} catch(err) {
return (<ErrorPage error={err} />);
}
}
顶层容器有这种方法称为其render()
方法:
render: function() {
return unsafeRender(function() {
return <Component />;
});
}
当<Component />
的渲染方法引发错误时,它不会被unsafeRender函数捕获。只有当我直接将它应用到组件时,该方法才会被调用。源代码见this fiddle。
为什么会出现这种情况,我是否真的必须将这种方法应用于每个子组件才能使其工作,而不是只能在顶层容器中使用它?
请参见[错误边界:从'render'#2461](https://github.com/facebook/react/issues/2461)中引发的错误中恢复。 –
解释了很多。谢谢@FelixKling! – maxmantz