朝活148日目 hiddenが動かない

ぬーーー
なんか日別の情報の下に週間予報が出てきちゃってる。。。

hiddenで条件入れるけど、うまくいかない。。。
条件に当てはまってないはずなのに表示される。
条件を===から!==にしても表示される。。。


<Table size="small" hidden={selectDate !== dates.length}>
こう書いたときに、selectDateは7以外、dates.lengthは7であるのに出力されてしまいます。リアクトのレンダリングの関係ですか?


`hidden`属性に基づいて表示を制御している場合、その値が正しく評価されているにもかかわらず、期待した動作をしないことがあります。これは特にReactのレンダリング挙動やDOMの更新の仕方による影響を受けやすいです。Reactでは、`hidden`属性よりも、条件に基づいてコンポーネントをレンダリングするかどうかを制御する方が一般的に推奨されています。

例えば、以下のようにコンポーネントのレンダリング自体を条件付きで行う方法です:

{selectDate === dates.length ? (
  <Table size="small">
    <TableHead>
      <TableRow>
        <TableCell>時間</TableCell>
        <TableCell>うねりの高さ</TableCell>
        <TableCell>うねりの向き</TableCell>
        <TableCell>風速(m/s)</TableCell>
        <TableCell>風向き</TableCell>
      </TableRow>
    </TableHead>
    <TableBody>
      {/* テーブルのボディ */}
    </TableBody>
  </Table>
) : null}

この方法では、`selectDate === dates.length`の評価が`true`の場合のみ`<Table>`がレンダリングされ、それ以外の場合は何もレンダリングされません。これにより、Reactの仮想DOMがより効率的に更新を行い、予期せぬ表示が出る問題を避けることができます。

また、`selectDate`の値が予期せず変わることが原因である場合は、その値が更新されるタイミングとその原因をデバッグしてみると良いでしょう。特に、親コンポーネントからのプロップスの変更や、グローバルな状態管理による副作用がないかを確認することが重要です。


おぉー
これで行けた!

んーーー
一瞬だけ調べてみたけど、hiddenがなんでダメだったかわかんないー

友人からゲームのお誘い来たので、今日はここまでー
動いてよかったー

この記事が気に入ったらサポートをしてみませんか?