【React.js/Next.js】Zustand 完全入門

React.js / Next.js

Zustand って、どんな機能があるのかな?

今回は、React.js 向けのシンプルな状態管理ライブラリ Zustand について、基本的な考え方から実際の使い方、そして実務でよく使われるユースケースまでをわかりやすく解説します。

React.js の環境構築がまだお済みでない場合は、下記より環境構築を行なってください。

Zustand とは?

Zustandとは、React.js 向けに設計された 軽量な状態管理ライブラリ です。Providerの設定が不要 で、シンプルかつ少ないコードで状態管理を実現できる 点が大きな特徴です。
さらに、必要な部分のみを再レンダリングできる ため、アプリケーションのパフォーマンスを最適化しやすい というメリットがあります。

なぜ Zustand が必要なの?

React.js では、小規模なアプリであれば useStateprops だけでも状態を管理することができます。

しかし、アプリケーションが大きくなり、コンポーネントの階層が深くなってくると、複数のコンポーネントで同じ状態を共有する必要性 が出てきます。

例えば、ログイン情報テーマ設定カートの中身 などは、アプリ全体で参照したい状態 です。

これらの状態を 親コンポーネントで管理 し、props を通じて 子コンポーネントへ受け渡していった 場合、階層が深くなれば深くなるほどコードが複雑になってしまいます
こうした 状態の受け渡しが連鎖する問題のことprops drilling と呼びます。

こうした問題を解決するのが 状態管理ライブラリ で、Zustand はその中でも 導入が簡単で学習コストが低くシンプルに状態を一元管理できるライブラリとして注目されています。

Zustand のインストールと基本的な使い方

それでは、ここから実際に Zustandインストール したり、コンポーネントで利用する 基本的な流れを見ていきましょう。

Zustand のインストール

Zustandインストール します

ユースケース①: カウンター

Store の作成

カウンター状態(データ)の初期値処理内容 を登録する

  • count状態
  • increment / decrement状態を更新する関数
  • setZustand が用意している 状態更新用関数
    Redux Toolkit のように reduceraction は不要です。

状態(データ)の取得・表示・更新

上記の Store を アプリ上 で呼び出して、状態(データ)の取得・表示・更新 を確認する
Provider の設定も不要です。

処理内容

  • +” ボタンで、+1 ずつカウントアップ される
  • ” ボタンで、-1 ずつカウントダウン される

ユースケース②: ログインのユーザー情報

Store の作成

ユーザー状態(データ)の初期値処理内容 を登録する

  • user状態
  • login / logout状態を更新する関数
  • setZustand が用意している 状態更新用関数
    Redux Toolkit のように reduceraction は不要です。

データの取得・表示・更新

上記の Store を アプリ上 で呼び出して、状態(データ)の取得・表示・更新 を確認する
Provider の設定も不要です。

処理内容

  • ログイン” ボタンのクリックで、 ”こんにちは、山田 太郎さん” と ”ログアウト” ボタンが表示される
  • ログアウト” ボタンのクリックで、入力欄 と”ログイン” ボタンが表示される
  • 入力欄 に ”テスト 花子”と入力後、”ログイン” ボタンのクリックで、 ”こんにちは、テスト 花子さん” と ”ログアウト” ボタンが表示される

まとめ

Zustand について、いかがでしたでしょうか?

Zustand は、Provider の設定が不要 で、シンプルかつ少ないコードで状態管理を実現することができる 軽量ライブラリ です。
必要な部分だけを再レンダリングできる ため、アプリケーションのパフォーマンスを最適化しやすくログイン中のユーザー情報アプリ全体で共有したい設定情報の管理 にも向いています。

まずは基本的な使い方から試し、小さな コンポーネント で動かしながら、少しずつ Zustand に慣れていきましょう。

公式サイト

Zustand

Zustand
🐻 Bear necessities for state management in React
tachu × tachu

Laravel / React フルスタックエンジニア

Webエンジニア歴15年、フリーランス歴8年で、PHP / Laravel を中心に、
React.js / Vue.js を用いたフルスタックでのWeb開発をしています。

技術記事は Laravel / React / Web開発 を中心に書いています。

Webサービスの開発、既存システム改善、機能追加、技術相談、小規模な開発など、お気軽にご相談ください。

React.js / Next.js
シェアする

コメント

タイトルとURLをコピーしました