2
0

【React】複数のstateの同時更新

Posted at

複数のstateの同時更新

Reactで複数の状態(state)を同時に更新するには、useStateフックの代わりにuseReducerフックを使用することがあります。useReducerフックは、複雑な状態ロジックを持つコンポーネントや、複数の状態をまとめて管理したい場合に便利です。

使用方法

以下は、useReducerフックを使用して複数の状態を同時に更新する方法の例です。

import React, { useReducer } from 'react';

// 初期状態
const initialState = {
  count: 0,
  text: ''
};

// reducer関数
const reducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { ...state, count: state.count + 1 };
    case 'decrement':
      return { ...state, count: state.count - 1 };
    case 'setText':
      return { ...state, text: action.payload };
    default:
      return state;
  }
};

function MyComponent() {
  // reducer関数と初期状態を渡してstateとdispatch関数を取得する
  const [state, dispatch] = useReducer(reducer, initialState);

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
      <input
        type="text"
        value={state.text}
        onChange={(e) => dispatch({ type: 'setText', payload: e.target.value })}
      />
    </div>
  );
}

export default MyComponent;

この例では、useReducerフックを使用してreducer関数とinitialStateを渡して、statedispatch関数を取得します。dispatch関数を使用してアクションを送信し、reducer関数によって新しい状態が計算されます。dispatch関数は、アクションを受け取り、それに基づいて状態を更新するために使用されます。このようにして、複数の状態を同時に更新することができます。

2
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
2
0