LoginSignup
0
0

Next.jsにおけるstateの仕組み

Posted at

Next.jsにおけるstateは、コンポーネント内でデータを保持し、その変化を反映させるための重要な仕組みです。コンポーネントの内部状態を管理することで、動的なUIを実現したり、ユーザー入力に応じた処理を実行したりすることができます。

stateの種類

Next.jsでは、主に以下の2種類のstateが利用できます。

  • ローカルstate: 特定のコンポーネント内でのみ保持されるstateです。他のコンポーネントからは直接アクセスできません。
  • グローバルstate: アプリケーション全体で共有されるstateです。どのコンポーネントからもアクセスして更新することができます。

stateの管理方法

stateは、主に以下の2つの方法で管理することができます。

  • useStateフック: 関数コンポーネント内でstateを定義・管理するためのフックです。最も一般的なstate管理方法です。
  • useReducerフック: 複雑なstate管理や副作用処理に適したフックです。useStateフックよりも高度な機能を提供します。

useStateフックの使い方

useStateフックは、以下の手順で利用することができます。

  1. useStateフックを呼び出し、初期state値を指定します。
  2. 返される配列の最初の要素は、現在のstate値です。
  3. 2番目の要素は、stateを更新するための関数です。
const [count, setCount] = useState(0);

// ...

<button onClick={() => setCount(count + 1)}>カウントアップ</button>
<p>カウント: {count}</p>

useReducerフックの使い方

useReducerフックは、以下の手順で利用することができます。

  1. useReducerフックを呼び出し、reducer関数と初期state値を指定します。
  2. 返される配列の最初の要素は、現在のstate値です。
  3. 2番目の要素は、stateを更新するためのdispatch関数です。
const reducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      return state;
  }
};

const [state, dispatch] = useReducer(reducer, { count: 0 });

// ...

<button onClick={() => dispatch({ type: 'increment' })}>カウントアップ</button>
<button onClick={() => dispatch({ type: 'decrement' })}>カウントダウン</button>
<p>カウント: {state.count}</p>

その他

  • Next.jsでは、getStaticPropsgetServerSidePropsなどの特別な関数を使用して、コンポーネントの初回レンダリング時にstateを初期化することができます。
  • stateは、コンポーネントの再レンダリングをトリガーする重要な役割を果たします。stateが変更されると、コンポーネントは再レンダリングされ、最新の状態を反映します。
0
0
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
0
0