0Pricing
React Academy · レッスン

Redux ToolkitのSlicesとcreateSlice

createSliceでreducerロジックを作成し、actionsを定義してRedux storeに接続します。

「Redux ToolkitのSlicesとcreateSlice」はCoddyKit上の無料React Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。

ようこそ

このレッスンでは、createSliceを使用してRedux Toolkitのスライスを作成し、アクションとreducerを1か所で定義して、Reduxストアに接続します。

Redux Toolkitとは

Redux Toolkit(RTK)は、Reduxを記述するための公式で特定の設計方針に基づいた方法です。reducer、アクションクリエーター、初期状態を1つのcreateSlice()呼び出しにまとめることで、定型コードを削減します。

インストール

Redux Toolkitとreact-reduxをインストールします。
npm install @reduxjs/toolkit react-redux

createSlice

name、initialState、reducersオブジェクトを指定してcreateSlice()を呼び出します。RTKがアクションクリエーターとアクションタイプを自動的に生成します。
import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: state => { state.value += 1; },
    decrement: state => { state.value -= 1; },
    incrementBy: (state, action) => { state.value += action.payload; },
  },
});

export const { increment, decrement, incrementBy } = counterSlice.actions;
export default counterSlice.reducer;

Immerの内部動作

RTKは内部でImmerを使用するため、ミューテーション形式のリデューサーロジック(`state.value += 1`)を安全に記述できます。Immerが内部で不変更新に変換します。

ストアの設定

configureStore()でReduxストアを作成し、各スライスをリデューサーとして追加します。
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';

export const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

ストアの提供

ストアを渡して、react-reduxのProviderでアプリをラップします。
import { Provider } from 'react-redux';
import { store } from './store';

createRoot(document.getElementById('root')).render(
  <Provider store={store}><App /></Provider>
);

useSelectorとuseDispatch

useSelectorで状態を読み取り、useDispatchでアクションをディスパッチします。TypeScriptでは型付きのバージョンを使用します。
import { useSelector, useDispatch } from 'react-redux';

function Counter() {
  const value = useSelector(state => state.counter.value);
  const dispatch = useDispatch();
  return (
    <>
      <p>{value}</p>
      <button onClick={() => dispatch(increment())}>+</button>
      <button onClick={() => dispatch(incrementBy(5))}>+5</button>
    </>
  );
}

TypeScriptの型

完全に型付けされたフックを使用するため、store.tsからRootState型とAppDispatch型をエクスポートします。
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
// Then use typed hooks:
const value = useSelector((s: RootState) => s.counter.value);

追加のリデューサー

extraReducersフィールドでは、他のスライスのアクションやcreateAsyncThunkのアクションを処理します。builderコールバックパターンを使用してケースを追加します。
extraReducers: (builder) => {
  builder.addCase(fetchUser.fulfilled, (state, action) => {
    state.user = action.payload;
  });
}

理解度チェック

Redux Toolkitのリデューサー内で、`state.value += 1`のようなミューテーション形式のコードを記述できるのはなぜですか?

まとめ

createSliceは、name、initialState、reducersを1つのオブジェクトにまとめます。Immerによって、ミューテーション形式のリデューサーコードを記述できます。configureStoreはスライスを組み立てます。useSelectorは状態を読み取り、useDispatchはアクションをディスパッチします。

次のレッスン

次のレッスン:**createAsyncThunkによる非同期ロジック** — ライフサイクルアクションの型を使って、ReduxでAPI呼び出しを処理します。

よくある質問

「Redux ToolkitのSlicesとcreateSlice」レッスンは無料ですか?

はい。「Redux ToolkitのSlicesとcreateSlice」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。

「Redux ToolkitのSlicesとcreateSlice」で何を学びますか?

createSliceでreducerロジックを作成し、actionsを定義してRedux storeに接続します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

React Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Redux ToolkitのSlicesとcreateSlice」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このReact Academyレッスンでコードを書いて実行できますか?

はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Redux ToolkitのSlicesとcreateSlice
  2. createAsyncThunkによる非同期ロジック
  3. RTK Query:Endpointsと自動キャッシュ
  4. Optimistic Updatesとキャッシュ無効化
← React Academyに戻る