😶

useSelectorを使った効率的なState参照方法(分割代入の活用)

2024/09/09に公開

React ReduxのuseSelectorを使ってStateを参照する際、以下のようにState全体から特定のプロパティを参照することが一般的なのかなと思っていました。

const broadcastState = useSelector(state => state.broadcast);

ただ、この場合、broadcastStateに格納されたオブジェクトのプロパティを使うたびに、常にbroadcastState.をつけて参照しなければなりません。

例えば、broadcastsnextを参照する場合は次のようになります。

if (broadcastState.broadcasts) {
  ~
}

{ broadcastState.onAir && broadcastState.next ? renderLiveInfo() : <Skeleton variant="rect" className="skeleton"/>}

ただ、この方法だと、State内のプロパティを参照するたびに、broadcastState.のようなプレフィックス(接頭辞)が必要です。

コードが長くなり、可読性が下がる場合があります。


分割代入を使った簡略化

この問題を解決するために、分割代入を使用することで、必要なプロパティのみを抽出し、コードをより簡潔にすることができます。

次の例では、useSelectorを使用しながら、broadcastsonAirnextといった必要なプロパティを直接取り出しています。

const { broadcasts, onAir, next } = useSelector(state => state.broadcast);

こうすることで、broadcastState.broadcastsのように冗長な書き方をせずに、必要なデータだけを参照できるようになります。

結果的に、コードの読みやすさやメンテナンス性が向上します。


まとめ

ReduxのuseSelectorでStateを参照する際、分割代入を活用することで、冗長なコードを避け、必要なプロパティをシンプルに取り出すことができます。

これにより、コードの可読性が向上し、保守性も高まります。

分割代入を積極的に取り入れて、コードの質を向上させましょう。

Discussion