青いやつの進捗日記。

メモとしてべんきょうのしんちょくをかいていきます。あとで自分が検索しやすいもん

Reactで数字入ってるかを条件に&&で出し分けようとすると、0が描画される→なぜなら0はfalseだから…!

どういう状況の話かと言うと、

num && ( <Text>{list[num]}</Text> )

のように、型がnumberの変数numが入っていたらlist[num]を描画したい、という状況。

で、num1とか入ったら意図通り<Text>list[1]</Text>が描画されるのだけど、num0が入ると、<Text>list[0]</Text>ではなく、なぜか0だけ描画される。

なんで〜〜〜〜と思ってたら、

stackoverflow.com

これに書いてありました。

そう、0はfalseなんですね。numがtrueだと処理が&&の右に移りが描画される…という記述で、falseのときはそこで止まるんですね。

で、booleanだとなにもレンダリングされません。が、当然0は数字なのでレンダリングされます。なので、0だけ描画される、ということでした。考えたら当たり前ですね…

typescript-jp.gitbook.io

なので、もし0も許可したい状況であれば、

!!num && ( <Text>{list[num]}</Text> )

で明示的にbooleanにするか、あとレビューで言われたのは

num !== null && ( <Text>{list[num]}</Text> )

とするか。って感じでした。やーすっきり。


Twitterでなんでかなーと思ってふと呟いたら

教えてくれた友達スペシャルサンクス