4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

React #2Advent Calendar 2019

Day 12

Reactの式展開について

Last updated at Posted at 2019-12-11

Reactでコンポーネントを作るに当たって、変数展開は欠かせないものですが、微妙に気になることがいくつかあります。

消えるもの、消えないもの

よく条件で表示するものを変えるときに、{condition || <SomeComponent />}{condition && <SomeComponent />}のように書くこともあるかと思いますが、条件を満たさない場合、左側がそのまま描画対象となります。

そして、truefalsenullundefined、空文字列ならもちろん何も描画されないのですが、truthyなものは基本的に描画対象となりますし、falsyなものでも0は「0」として描画されてしまいます。

? :を使って条件判定の後で描画するものを明確にする、あるいは展開箇所で不等号や!!!などを直接書いてtruefalseしか入らないようにする、といった注意は払ったほうがいいかもしれません。

テキストノードが入らない

ふつうに以下のようなHTMLを書くと、<button>テキストの間には改行があるので、スペースが入ります。

<p>
  <button type="button">ボタン</button>
  テキスト
</p>

一方で、JSXの場合は改行の絡むスペースはすべて無視される</button> テキストのように、同一行に書いたときは無視されません)ので、<button>テキストがくっついてしまいます。

もちろん、「CSSで隙間を開ける」という解決策もあるのですが、スペースとしてのテキストノードを書いたほうがいい場面もあります。

このような場合、式展開の形で書けばスペースが消えることはありません。

<p>
  <button type="button">ボタン</button>
  { ' ' }
  テキスト
</p>
<p>
  <button type="button">ボタン</button>
  { ' テキスト' }
</p>

スペースだけ独立して書いてもいいですし、スペースに続く文言まで文字列として含むのもありです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?