🟨
Next.jsにおけるstateの仕組み
Next.jsにおけるstateは、コンポーネント内でデータを保持し、その変化を反映させるための重要な仕組みです。コンポーネントの内部状態を管理することで、動的なUIを実現したり、ユーザー入力に応じた処理を実行したりすることができます。
stateの種類
Next.jsでは、主に以下の2種類のstateが利用できます。
- ローカルstate: 特定のコンポーネント内でのみ保持されるstateです。他のコンポーネントからは直接アクセスできません。
- グローバルstate: アプリケーション全体で共有されるstateです。どのコンポーネントからもアクセスして更新することができます。
stateの管理方法
stateは、主に以下の2つの方法で管理することができます。
-
useState
フック: 関数コンポーネント内でstateを定義・管理するためのフックです。最も一般的なstate管理方法です。 -
useReducer
フック: 複雑なstate管理や副作用処理に適したフックです。useState
フックよりも高度な機能を提供します。
useState
フックの使い方
useState
フックは、以下の手順で利用することができます。
-
useState
フックを呼び出し、初期state値を指定します。 - 返される配列の最初の要素は、現在のstate値です。
- 2番目の要素は、stateを更新するための関数です。
const [count, setCount] = useState(0);
// ...
<button onClick={() => setCount(count + 1)}>カウントアップ</button>
<p>カウント: {count}</p>
useReducer
フックの使い方
useReducer
フックは、以下の手順で利用することができます。
-
useReducer
フックを呼び出し、reducer関数と初期state値を指定します。 - 返される配列の最初の要素は、現在のstate値です。
- 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では、
getStaticProps
やgetServerSideProps
などの特別な関数を使用して、コンポーネントの初回レンダリング時にstateを初期化することができます。 - stateは、コンポーネントの再レンダリングをトリガーする重要な役割を果たします。stateが変更されると、コンポーネントは再レンダリングされ、最新の状態を反映します。
Discussion