🫣

【React初心者向け】jsxでif文は使えないぜと言われた時に見て欲しい記事

2023/05/08に公開
4

初学者が最初に学ぶ条件分岐はif構文や三項演算子が一般的だと思うが、実は&&|| を使って、簡単な条件分岐を表現できます。

実務ではじめてReactを触った時に、「なんだこれ??」ってなったので、紹介します!

※コードはjavascriptで書きたいと思いますmm

よくある使い方

if (条件1 && 条件2) {
  ~~ 処理 ~~
}

if (条件1 || 条件2) {
  ~~ 処理 ~~
}

React(jsx, tsx)などでの使い方

どちらかといえば、Reactでこの条件分岐を使うことが多いです(というか、ほぼReactでしか使った記憶ない)
jsx(tsx)だと、if文が使えないので、以下のようなやり方をすれば条件分岐が表現できます。

const Hoge = () => {
  // ログインしているユーザーを取得しているとする
  const user = fetchLoginUser()

  return(
    <>
      ...
        
      { user && (
          // ユーザーがいる場合に表示させるコンポーネント
        )
      }

      ...
    </>
  )
}

なぜ、動くか??

&&|| は内部では、以下のような動いている

const condition1 = true
const condition2 = false

// condition1がtrueなら、condition2を返す
// condition1がfalseなら、その時点でcondition1を返す
condition1 && condition2

// condition1がtrueなら、その時点でcondition1を返す
// condition1がfalseなら、condition2を返す
condition1 || condition2

変数の定義でも使える

なぜ、動くかがわかれば、こんな使い方もできます。

const a = 'AAA' || 'BBB'

console.log(a) // AAA

const b = 'AAA' && 'BBB'

console.log(b) // BBB

Discussion

standard softwarestandard software
const Hoge = () => {
  const user = fetchLoginUser()
  return(
    <>
      ...
        
      { user && (
          // ユーザーがいる場合に表示させるコンポーネント
        )
      }

or じゃなくて、and ではないかなと。

タロウタロウ

ご指摘ありがとうございます!
そうですね、こちらが間違っていましたので、修正させていただきました ><

saneatsusaneatsu

記事ありがとうございます!
2点タイポぽいものがあるのでコメントします🙇🏻‍♂️

// condition1がfalseなら、その時点でcondition2を返す

これは「condition1がfalseなら、その時点でcondition1を返す」が正しいですかね?

const b = 'AAA' || 'BBB'

こちらも、const b = 'AAA' && 'BBB' ですかね?🤔

タロウタロウ

ご指摘ありがとうございます!!
こちらも、おっしゃる通り、タイポしてましたので、修正させていただきましたmm
お手数おかけしました🙇