2016-04-29 35 views
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

为什么会出现这种情况,我是否真的必须将这种方法应用于每个子组件才能使其工作,而不是只能在顶层容器中使用它?

+1

请参见[错误边界:从'render'#2461](https://github.com/facebook/react/issues/2461)中引发的错误中恢复。 –

+0

解释了很多。谢谢@FelixKling! – maxmantz

回答

0

这是由React中的已知问题引起的。请参阅Felix Kling在我的问题下对Github上关于该问题的链接的评论。

相关问题