以下のようにA
コンポーネントの中で定義したB
コンポーネントをA
コンポーネントから呼び出す場合と、
function A() { function B() { return <h1>Bだよ</h1>; }; return ( <div> <h1>Aだよ</h1> <B/> </div> ); }
以下のようにA
コンポーネントの外で定義したB
コンポーネントをA
コンポーネントから呼び出す場合とでは挙動が違います。
function A() { return ( <div> <h1>Aだよ</h1> <B/> </div> ); } function B() { return <h1>Bだよ</h1>; };
- 前者の方法:
A
が再レンダリングされるたびにB
が宣言される。(リセットされる)
- 後者の方法:
A
が再レンダリングされてもB
はそのまま。
「B
の中身を保持したい!」という場合は後者の方法で書かないとダメ。
例えば、B
でstate
を保持している場合、前者の方法だとA
が再レンダリングされるたびにstate
がリセットされちゃうのでstate
が意味をなさなくなる。
おわり
コメント