2016-04-29 12 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の既知の問題が原因です。 Githubに関する問題へのリンクについては、私の質問の下でFelix Klingのコメントを参照してください。