Redux Toolkit非公式翻訳(1) QuickStart
Redux Toolkit私家版翻訳。
私の英語力は全然高くない(ちゃんと英語を訳したのは大学受験以来)ので、あまり正確な訳は期待しないでください。
元ページ:
redux-toolkit.js.org
クイックスタート
目的
Redux ToolkitはReduxを記述する上での標準になることを意図して作られましたが、元々はReduxについての3つのよくある問題を解決するために作られました。
- Redux storeの設定が複雑すぎる
- Reduxを便利に使うためにはたくさんのパッケージを導入しないといけない
- Reduxを使うにはたくさんのボイラープレートコードの記述が必要
全てのユースケースを解決することはできませんが、create-react-appや`apollo-boost のように、セットアップ手順を抽象化し、一般的なユースケースに対応し、アプリケーションのコードをシンプルにしてくれる便利なユーティリティを含むようなツールを提供することはできます。
これらの理由により、このパッケージはあえてスコープを限定しています。"Reduxモジュールを再利用可能でカプセル化されたものにする"といったようなコンセプトは考慮していませんし、データのキャッシュやフォルダ/ファイル構造、storeにおけるエンティティのリレーションなどといったものにも対応していません。
つまり、全てのReduxユーザにとって有用である必要があります。最初のプロジェクトをセットアップしている初心者や、既存のアプリケーションをシンプルにしたいと思っている経験者などにかかわらず、このツールはあなたのReduxコードをより良いものにしてくれます。
このツールに含まれるもの
Redux Toolkitには以下のAPIが含まれます。
configureStore()
: シンプルな設定オプションや標準を提供するためにcreateStoreをラップしています。自動的にslice reducerを組み合わせ、redux-thunkのようなミドルウェアをデフォルトで追加し、Redux DevToolsを利用可能にします。createReducer()
: 自分でswitch式を書かずに済むように、reducer関数を呼び出すためのaction typesのセットを提供します。さらに、通常のミュータブルなコード(こんなコードです:state.todos[3].completed = true
)でシンプルにイミュータブルな更新を行えるよう自動的にimmerというライブラリを使用します。createAction()
: action creater関数を生成します。関数にはtoString()が定義されており、action typeを使用するような場所で呼ぶことができます。createSlice()
: reducer関数のオブジェクトやslice名、stateの初期値を受け取り、action createrやaction typesに対応するslice reducerを自動で生成します。createAsyncThunk
: action type文字悦とpromiseを返す関数を受け取り、promiseに基づいてpending/resolved/rejectedというaction typeを* dispatchするthunkを生成します。createEntityAdapter
: storeで正規化されたデータを扱うための再利用可能なreducerを生成します。createSelector
: Reselectライブラリから再exportされたユーティリティです。
インストール
Create React Appを使う
ReactとRedux Toolkitをを使ったアプリケーションを立ち上げる際は、Ceate React Appに用意された公式テンプレートを使用することを推奨しています。これにはReact ReduxをReactのコンポーネントに統合しやすいというメリットがあります。
npx create-react-app my-app --template redux
既存のアプリに導入する
Redux Toolkitはモジュールバンドラーを使ってnpmパッケージとして利用したり、Nodeアプリケーションで使うことができます。
# npm npm install [eduxjs/toolkit # yarn yarn add @reduxjs/toolkit
また、グローバル変数window.RTKが定義されたプリコンパイル済みのUMDパッケージとして利用することもできます。UMDパッケージは<script>タグで直接使用することができます。