2016-08-15 5 views
0

Reactは、通常のフローの外にコンポーネントをレンダリングする標準的な方法を提供しますか?測定対象の隠れた領域に反応要素をレンダリングする

隠し領域に子要素をレンダリングし、その寸法を測定し、この情報を使用して、コンポーネントのrenderメソッドから返される内容を変更したいとします。 React.renderを使用しようとするとエラーがスローされます:

Uncaught Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's `render` method 

答えて

1

あなたは、通常の流れの中のものをオフスクリーンレンダリングすることができます。それをアプリのスタートアップの一環として行い、測定されたサイズをキャッシュします。あなたの子コンポーネントはそれをする必要はありません。

+0

コンポーネントの内容(したがってそれらの寸法も同様)は、アプリケーションの状態によって異なります。アプリケーションのライフサイクルの任意の時点でこれを行う方法はありますか? – giaour

+0

「二重レンダリング」技術を使用することができます。表示された状態が「非表示」に設定された状態でコンポーネントを1回レンダリングし、componentDidMountで測定を行い、可視性の状態を「可視」に設定すると、今度は正しい測定値で再レンダリングが行われます。その反応は残念ですが、反応ネイティブのようなonLayoutプロップはありません:) – hasseio

関連する問題