💯
私はReactのステートがどんなときにリセットされるかまったく分かっていなかった
きっかけはこれ
個人的には「?もちろんリセットされるでしょ?」と思っていましたが、リセットされないと答えている人もいました。そして、そのリセットされないと考えた理由について全然理解出来ていないので実践してみよう。のブログです。
答え
答えはここにすべて書いてあります
ネタバレ
やってみよう
着目するのはもちろんこの部分。ここをいろいろ弄ってみましょう
{!checked && <Counter />}
{checked && <Counter />}
三項演算子にしてみる → 保持される
{checked ? <Counter /> : <Counter />}
三項演算子にしてみるその2 キーを入れる → リセットされる
{checked ? <Counter key={checked} /> : <Counter key={checked} />}
キーが変わればええんよな → リセットされる
<Counter key={checked} />
falseではなくnullだったら? → リセットされる
{!checked ? <Counter /> : null}
{checked ? <Counter /> : null}
undefinedだったら? → リセットされる
{!checked ? <Counter /> : undefined}
{checked ? <Counter /> : undefined}
最初のケースで同じkeyを付けたら? → 保持される
{!checked && <Counter key={0} />}
{checked && <Counter key={0} />}
終わりに
「こんなおもろいケースあるよ!」をコメントで教えてもらえたら喜びます
Discussion