2017-01-06 6 views
11

私の現在の理解は、コンポーネントが見える必要があるとき、またはルートがそのコンポーネントを必要とするときにDOMにマウントすることです。子コンポーネントもレンダリングされます。これは、そのコンポーネントを持たないルートにアクセスしたとき、またはそのコンポーネントが生成する要素を表示していないページを訪れるたびに、コンポーネントがアンマウントされることを意味しますか?したがって、コンポーネントがDOMに表示されるたびに(プロップや状態の変更の外に)、コンポーネントを再マウントする必要がありますか?コンポーネントはいつアンマウントされますか?

答えて

0

ルータコンポーネントを含む別のコンポーネントを介して使用されている場合に限り、コンポーネントをDOMにマウントするとします。 Reactのルーターを特別な要素/ものとは考えないでください。これらは他のコンポーネントと似ており、現在のURLと、ルータのrender()機能を使ってどのコンポーネントをレンダリングするかを決定するパターンとのマッチングを行います。 URLが変更されるたびに、ルータはレンダリングする新しいコンポーネントを選択し、render()機能によってレンダリングします。

+1

私はルータがそれ自身の 'render()'関数を持っていることを意味し、現在のURLとどのパターンが一致しているかに基づいて関連するコンポーネントを使用します。この実装のようなものhttps://github.com/ReactTraining/react-router/blob/master/modules/Router.js#L126 –

-4

コンポーネントをレンダリングする必要がある場合は、DOMにマウントする必要があります。

マウントされていない場合は、マウントする前にマウントする必要があります。コンポーネントが存在していたが、もはや、コンポーネントがアンマウントとみなされていないだろうと(componentWillUnmount経由)をクリーンアップする機会を与えられている場合VirtualDOM和解中に

5

逆にコンポーネントが存在しなかった場合は、調整中に、真実であるが、今のコンポーネントが実装する準備が考えられ、そして自分自身を準備をする機会が与えられている、い(constructor/componentWillMount

ツリーを破棄すると、古いDOMノードが破棄されます。コンポーネント インスタンスは、componentWillUnmount()を受け取ります。新しいツリーを構築するときには、DOMに新しいDOMノードが挿入されます( )。コンポーネントのインスタンスは、 componentWillMount()、次にcomponentDidMount()を受け取ります。古いツリーに関連付けられているすべての状態 が失われます。お持ちでない場合は、特定のページを読むだけの価値であることを

https://facebook.github.io/react/docs/reconciliation.html

。また、繰り返し要素にはなぜkeyが非常に重要であるかが説明されています。

+0

私はかなりの時間このリンク/コンセプトを探していましたが、できませんでした神の愛はGoogleクエリを策定する。ありがとうございました。 – lakesare

+1

私は正しいことを知っていますか?何らかの理由で、私はいつもドキュメント上のものを見つけるのが難しいと感じています。彼らのせいではなく、他のJSフレームワークにはない新しい用語や概念 – Chris