Redux の使い方
1. Redux の基本的な概念
Redux を使うためには、まず以下の基本的な概念を理解することが重要です:
- Store(ストア):アプリケーションの状態が格納される場所。すべてのデータが一元管理されます。
- Action(アクション):状態を変更したいときに発行するオブジェクトで、
type
プロパティと必要に応じて他のデータを含んでいます。
- Reducer(リデューサー):アクションが発行されると、リデューサーが新しい状態を生成します。これは純粋な関数で、前の状態とアクションを受け取り、新しい状態を返します。
- Dispatch(ディスパッチ):アクションをストアに送る関数。これを使って状態を更新します。
2. Redux のインストール
まず、React プロジェクトに Redux をインストールします:
1
| npm install redux react-redux
|
redux
は状態管理のためのライブラリです。
react-redux
は React と Redux を接続するためのライブラリです。
3. Redux ストアの作成
まず、ストアを作成します。ストアは、アプリケーションの状態を管理する中心的な役割を果たします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import { createStore } from 'redux';
const initialState = { count: 0 };
const counterReducer = (state = initialState, action) => { switch (action.type) { case 'INCREMENT': return { count: state.count + 1 }; case 'DECREMENT': return { count: state.count - 1 }; default: return state; } };
const store = createStore(counterReducer);
export default store;
|
4. Action の定義
アクションは、状態の更新を表すオブジェクトです。アクションには少なくとも type
プロパティを含める必要があります。
1 2 3 4 5 6 7 8
| export const increment = () => ({ type: 'INCREMENT' });
export const decrement = () => ({ type: 'DECREMENT' });
|
5. React コンポーネントで Redux ストアを使用する
React アプリケーションで Redux のストアを使うために、Provider
コンポーネントでストアをラップし、アプリ全体にストアを提供します。
1 2 3 4 5 6 7 8 9 10 11 12 13
| import React from 'react'; import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; import store from './store'; import App from './App';
ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root') );
|
6. Redux ステートをコンポーネントで接続
React コンポーネントで Redux のステートを使うためには、useSelector
を使ってストアからデータを取得し、useDispatch
を使ってアクションをディスパッチします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import React from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { increment, decrement } from './actions';
const App = () => { const count = useSelector(state => state.count);
const dispatch = useDispatch();
return ( <div> <h1>Count: {count}</h1> <button onClick={() => dispatch(increment())}>Increment</button> <button onClick={() => dispatch(decrement())}>Decrement</button> </div> ); };
export default App;
|
7. Redux の使い方のまとめ
- Store:状態を格納する場所。
createStore
を使って作成します。
- Action:状態を変更するためにディスパッチされるオブジェクト。
type
プロパティを含みます。
- Reducer:状態変更のためのロジック。アクションを受け取り、新しい状態を返します。
- useSelector:React コンポーネント内で Redux の状態を取得するフック。
- useDispatch:アクションをストアにディスパッチするフック。
これで、Redux を使