💯

私はReactのステートがどんなときにリセットされるかまったく分かっていなかった

に公開

きっかけはこれ

個人的には「?もちろんリセットされるでしょ?」と思っていましたが、リセットされないと答えている人もいました。そして、そのリセットされないと考えた理由について全然理解出来ていないので実践してみよう。のブログです。

https://x.com/uhyo_/status/1974287182962835725

答え

答えはここにすべて書いてあります

ネタバレ

やってみよう

着目するのはもちろんこの部分。ここをいろいろ弄ってみましょう

{!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