学習リソース
Reduxのドキュメントは、Reduxの基本的な概念を教えるとともに、実際のアプリケーションで使用するための重要な概念を説明することを目的としています。ただし、ドキュメントはすべてを網羅することはできません。幸いなことに、Reduxを学習するための優れたリソースが他にもたくさんあります。ぜひチェックしてみてください。それらの多くは、ドキュメントの範囲を超えるトピックを扱っていたり、学習スタイルに適した他の方法で同じトピックを説明していたりします。
このページには、Reduxを学習するために利用できる最高の外部リソースの推奨事項が含まれています。React、Redux、Javascript、および関連トピックに関するチュートリアル、記事、その他のリソースの追加の包括的なリストについては、React/Reduxリンクリストを参照してください。
基本紹介
Reduxの基本概念と使い方を教えるチュートリアル
React、Redux、TypeScript入門
https://blog.isquaredsoftware.com/2020/12/presentations-react-redux-ts-intro/
ReduxメンテナーのMark Eriksonのスライドセットで、React、Redux、TypeScriptの基本をカバーしています。Reduxのトピックには、ストア、リデューサー、ミドルウェア、React-Redux、Redux Toolkitが含まれます。モダンReduxを学ぶ - Redux Toolkit、React-Reduxフック、RTK Query
https://www.learnwithjason.dev/let-s-learn-modern-redux
ReduxメンテナーのMark Eriksonがゲストとして出演する「Learn with Jason」番組のエピソード。このエピソードでは、ライブコーディングされたアプリを特集し、新しいReact+TSプロジェクトを作成し、Reduxパッケージを追加し、Redux ToolkitとReact-Reduxを最初からセットアップする方法を示します(推奨されるTSフック構成を含む)。また、近日公開予定のRTK QueryデータフェッチAPIを使用して、そのデータをUIに表示する方法も示します。Reduxチュートリアル:概要とウォークスルー
https://www.taniarascia.com/redux-react-guide/
Tania Rasciaによるよく書かれたチュートリアルで、Reduxの主要な概念をすばやく説明し、バニラReduxとRedux Toolkitを使用して基本的なRedux + Reactアプリをまとめる方法を示します。Redux for Beginners - Reduxを学ぶためのわかりやすいガイド
https://www.freecodecamp.org/news/redux-for-beginners-the-brain-friendly-guide-to-redux/
データフェッチを含む、Redux ToolkitとReact-Reduxを使用した小さなTODOアプリを構築する、わかりやすいチュートリアル。Redux ToolkitとTypeScriptでReduxを簡単に
https://www.mattbutton.com/redux-made-easy-with-redux-toolkit-and-typescript/
Redux ToolkitとTypeScriptを組み合わせてReduxアプリケーションを作成する方法と、RTKが一般的なReduxの使用法をどのように簡略化するかを示す役立つチュートリアル。Redux:Twitterの誇大広告から本番環境へ
https://slides.com/jenyaterpil/redux-from-twitter-hype-to-production#/
コアReduxの概念、Reactでの使用法、プロジェクトの編成、サンクとサガによる副作用を視覚的に段階的に説明する、よくできたスライドショー。React+Reduxアーキテクチャを介したデータの流れを示す、いくつかの優れたアニメーション図があります。
ReactでのReduxの使用
React-Reduxバインディングライブラリの説明
React-ReduxフックによるレガシーReduxアプリケーションの最新化
https://app.egghead.io/playlists/modernizing-a-legacy-redux-application-with-react-hooks-c528
以前のconnect
APIと新しいReact-ReduxフックAPIの違いと、コンポーネントでそれらのフックを使用する方法を示すビデオシリーズ。ReactアプリでReduxが役立つ理由
https://www.fullstackreact.com/articles/redux-with-mark-erikson/
コンポーネント間のデータの共有やホットモジュールリローディングなど、ReactでReduxを使用する利点の説明。
プロジェクトベースのチュートリアル
大規模な「現実世界の」アプリケーションを含む、プロジェクトを構築することでReduxの概念を教えるチュートリアル
- Practical Redux
https://blog.isquaredsoftware.com/2016/10/practical-redux-part-0-introduction/
https://blog.isquaredsoftware.com/series/practical-redux/
Battletechキャンペーンを管理するためのMekHQアプリケーションに基づいて、サンプルアプリケーションを構築することにより、多くの特定のReduxテクニックを示すことを目的とした、継続的な投稿シリーズ。Reduxの共同メンテナーであるMark Eriksonによって書かれています。リレーショナルデータの管理、複数のコンポーネントとリストの接続、機能の複雑なリデューサーロジック、フォームの処理、モーダルダイアログの表示などのトピックをカバーしています。(注:これは古いシリーズであり、今日ではReduxコードを記述するための新しいパターンをお勧めします。ただし、このシリーズの多くの原則は依然として価値があります。)
Reduxの実装
ミニチュア再実装を記述することにより、Reduxが内部でどのように機能するかを説明
Redux入門 - ビデオシリーズ
https://egghead.io/courses/fundamentals-of-redux-course-from-dan-abramov-bd5cc867
https://github.com/tayiorbeii/egghead.io_redux_course_notes
Reduxの作成者であるDan Abramovが、30本の短い(2〜5分)ビデオでさまざまな概念を実演します。リンクされたGithubリポジトリには、ビデオのメモと書き起こしが含まれています。イディオムReduxを使用したReactアプリケーションの構築 - ビデオシリーズ
https://egghead.io/courses/building-react-applications-with-idiomatic-redux
https://github.com/tayiorbeii/egghead.io_idiomatic_redux_course_notes
Dan Abramovの2番目のビデオチュートリアルシリーズで、最初のビデオの直後から続きます。ストアの初期状態、React RouterでのReduxの使用、「セレクター」関数の使用、状態の正規化、Reduxミドルウェアの使用、非同期アクションクリエーターなどに関するレッスンが含まれています。リンクされたGithubリポジトリには、ビデオのメモと書き起こしが含まれています。Live React:ホットリローディングとタイムトラベル
https://youtube.com/watch?v=xsSnOQynTHs
Reduxを紹介したDan Abramovの元の会議での講演。Reduxによって強制される制約が、タイムトラベルによるホットリローディングを容易にする方法をご覧ください。自分でReduxを構築する
https://zapier.com/engineering/how-to-build-redux/
Reduxのコアだけでなく、connect
とミドルウェアもカバーする、優れた詳細な「ミニReduxを構築する」記事。Connect.jsの説明
https://gist.github.com/gaearon/1d19088790e70ac32ea636c025ba424e
基本的な実装を示すReact Reduxのconnect()
関数の非常に簡略化されたバージョンReduxを書きましょう!
https://www.jamasoftware.com/blog/lets-write-redux/
概念と実装を説明するために、ミニチュア版のReduxを段階的に書き込むことについて説明します。
リデューサー
リデューサー関数を記述する方法について説明する記事
combineReducers
の活用
https://randycoulman.com/blog/2016/11/22/taking-advantage-of-combinereducers/combineReducers
を複数回使用して状態ツリーを生成する例と、リデューサーロジックへのさまざまなアプローチにおけるトレードオフに関するいくつかの考察。高階リデューサーの力
https://slides.com/omnidan/hor#/
redux-undoやその他のライブラリの作成者による、高階リデューサーの概念とその使用方法を説明するスライドショー高階リデューサーによるリデューサーの構成
https://medium.com/@mange_vibration/reducer-composition-with-higher-order-reducers-35c3977ed08f
初期状態の提供、フィルタリング、特定のキーの更新など、より大きな特定のリデューサータスクを実行するために一緒に構成できる小さな関数を記述する優れた例。高階リデューサー - ただ恐ろしいように聞こえる
https://medium.com/@danielkagan/high-order-reducers-it-just-sounds-scary-2b9e5dbfc705
リデューサーをレゴブロックのように構成して、再利用可能でテスト可能なリデューサーロジックを作成する方法について説明します。
セレクター
状態から値を読み取るためにセレクター関数を使用する方法とその理由の説明
イディオムRedux:カプセル化とパフォーマンスのためのReselectセレクターの使用
https://blog.isquaredsoftware.com/2017/12/idiomatic-redux-using-reselect-selectors/
Reduxでセレクター関数を使用する必要がある理由、Reselectライブラリを使用して最適化されたセレクターを記述する方法、およびパフォーマンスを向上させるための高度なヒントに関する完全なガイド。ReactCasts#8:Reduxのセレクター
https://www.youtube.com/watch?v=frT3to2ACCw
ストアからデータを取得し、ストアの値から追加のデータを派生させるためにセレクター関数を使用する理由と方法に関する優れた概要ReselectによるReact Reduxアプリケーション開発の最適化
https://codebrahma.com/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/
Reselectに関する優れたチュートリアル。「セレクター関数」の概念、ReselectのAPIの使用方法、およびメモ化されたセレクターを使用してパフォーマンスを向上させる方法を説明します。React-ReduxアプリケーションでのReselectの使用
https://dashbouquet.com/blog/frontend-development/usage-of-reselect-in-a-react-redux-application
パフォーマンスに対するメモ化されたセレクターの重要性と、Reselectを使用するための優れたプラクティスについて説明します。React、Reselect、およびRedux
https://medium.com/@parkerdan/react-reselect-and-redux-b34017f8194c
Reselectのメモ化されたセレクター関数がReduxアプリでどのように役立つか、および各コンポーネントインスタンスの一意のセレクターインスタンスを作成する方法の説明。
正規化
最高のパフォーマンスを得るために、データベースのようにReduxストアを構造化する方法
Reduxストアのクエリ
https://medium.com/@adamrackis/querying-a-redux-store-37db8c7f3b0f
データの正規化やセレクター関数の使用など、Reduxでのデータの整理と格納に関するベストプラクティスについて説明します。最大限のコード再利用のためのReduxストアの正規化
https://medium.com/@adamrackis/normalizing-redux-stores-for-maximum-code-reuse-ae6e3844ae95
正規化されたReduxストアが、どのように有用なデータ処理アプローチを可能にするかについての考察。階層化されたデータを非正規化するセレクター関数の使用例とともに。高度なReduxエンティティ正規化
https://medium.com/@dcousineau/advanced-redux-entity-normalization-f5f1fe2aefc5
SQLの「ビュー」のような、状態内のエンティティのサブセットを追跡するための「keyWindow」という概念について説明しています。正規化されたデータという考え方を拡張するのに役立ちます。
ミドルウェア
ミドルウェアの仕組みと、その書き方に関する説明と例
Reduxミドルウェアの探求
https://blog.krawaller.se/posts/exploring-redux-middleware/
一連の小さな実験を通してミドルウェアを理解するReduxミドルウェアチュートリアル
https://github.com/pshrmn/notes/blob/master/redux/redux-middleware.md
ミドルウェアとは何か、applyMiddleware
がどのように機能するか、そしてミドルウェアの書き方に関する概要。ReactCasts #6: Reduxミドルウェア
https://www.youtube.com/watch?v=T-qtHI1qHIg
ミドルウェアがReduxにどのように適合するか、その用途、およびカスタムミドルウェアの実装方法を解説するスクリーンキャストReduxミドルウェアの初心者向けガイド
https://www.codementor.io/reactjs/tutorial/beginner-s-guide-to-redux-middleware
多数の例を交えながらミドルウェアのユースケースをわかりやすく解説JavaScriptにおける関数合成
https://joecortopassi.com/articles/functional-composition-in-javascript/compose
関数がどのように機能するかを分解して説明
副作用 - 基本
Reduxでの非同期処理の導入
Stack Overflow: タイムアウト付きでReduxアクションをディスパッチする
https://stackoverflow.com/questions/35411423/how-to-dispatch-a-redux-action-with-a-timeout/35415559#35415559
Dan AbramovがReduxでの非同期処理の基本について、段階的なアプローチ(インライン非同期呼び出し、非同期アクションクリエーター、サンクミドルウェア)を解説Stack Overflow: Reduxでの非同期フローにミドルウェアが必要なのはなぜですか?
https://stackoverflow.com/questions/34570758/why-do-we-need-middleware-for-async-flow-in-redux/34599594#34599594
Dan Abramovがサンクと非同期ミドルウェアを使用する理由と、サンクを使用するためのいくつかの有用なパターンを提示「サンク」とは一体何ですか?
https://daveceddia.com/what-is-a-thunk/
一般的な意味での「サンク」という単語と、特にReduxにおける意味を簡単に説明Reduxにおけるサンク:基本
https://medium.com/fullstack-academy/thunks-in-redux-the-basics-85e538a3fe60
サンクとは何か、何を解決するのか、そしてその使い方を詳しく解説
副作用 - 高度
非同期処理を管理するための高度なツールとテクニック
Reduxで非同期操作を行う正しい方法とは?
https://decembersoft.com/posts/what-is-the-right-way-to-do-asynchronous-operations-in-redux/
Reduxの副作用に関する最も人気のあるライブラリについて、それぞれの仕組みを比較検討した優れた考察Redux 4つの方法
https://medium.com/react-native-training/redux-4-ways-95a130da0cdc
サンク、Saga、Observable、Promiseミドルウェアを使用して、基本的なデータフェッチを実装する際の並列比較イディオムRedux:サンク、Saga、抽象化、再利用性に関する考察
https://blog.isquaredsoftware.com/2017/01/idiomatic-redux-thoughts-on-thunks-sagas-abstraction-and-reusability/
「サンクは良くない」といういくつかの懸念に対する反論。サンク(とSaga)は、複雑な同期ロジックと非同期の副作用を管理するための有効なアプローチであると主張。JavaScriptパワーツール:Redux-Saga
https://formidable.com/blog/2017/javascript-power-tools-redux-saga/
https://formidable.com/blog/2017/composition-patterns-in-redux-saga/
https://formidable.com/blog/2017/real-world-redux-saga-patterns/
Redux-Sagaの背後にある概念、実装、メリットを解説する素晴らしいシリーズ。ES6ジェネレーターが関数の流れを制御する方法、Sagaを組み合わせて並行処理を実現する方法、そしてSagaの実用的なユースケースが含まれています。Redux Sagaの探求
https://medium.com/onfido-tech/exploring-redux-sagas-cc1fca2015ee
Sagaを使用して、Reduxアプリケーションで分離されたビジネスロジックを実装するための接着層を提供する方法を解説する優れた記事SagaでReduxを使いこなす
https://objectpartners.com/2017/11/20/taming-redux-with-sagas/
ジェネレーター関数、Sagaのユースケース、Sagaを使用してPromiseを処理する方法、そしてSagaのテストなど、Redux-Sagaの概要をわかりやすく解説RxJSによるリアクティブRedux状態
https://ivanjov.com/reactive-redux-state-with-rxjs/
「リアクティブプログラミング」の概念とRxJSライブラリについて解説し、redux-observableを使用してデータをフェッチする方法をテスト例とともに示すredux-observableを使用してReduxで非同期ロジックを処理する
https://medium.com/dailyjs/using-redux-observable-to-handle-asynchronous-logic-in-redux-d49194742522
線画の例を処理するためのサンクベースの実装とObservableベースの実装を比較する拡張投稿
Reduxでの考え方
Reduxがどのように使われることを意図しているのか、そしてなぜそのように機能するのかをより深く探求
- Reduxを使用するべき時(とそうでない時)
https://changelog.com/posts/when-and-when-not-to-reach-for-redux
ReduxのメンテナーであるMark Eriksonが、Reduxが解決するために作成された問題を説明し、他の一般的なツールと比較
Reduxは必要ないかもしれません
https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367
Dan AbramovがReduxを使用する際のトレードオフについて議論イディオムRedux:Reduxの道、パート1 - 実装と意図
https://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-1/
Reduxが実際にどのように機能するか、従うべき制約、その設計と使用の背後にある意図を深く掘り下げるイディオムRedux:Reduxの道、パート2 - 実践と哲学
https://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-2/
一般的なReduxの使用パターンが存在する理由、Reduxを使用できるその他の方法、およびそれらの異なるパターンとアプローチの長所と短所に関する考察のフォローアップReduxの何が素晴らしいのか?
https://medium.freecodecamp.org/whats-so-great-about-redux-ac16f1cc0f8b
ReduxがOOPやメッセージパッシングと比較してどうなのか、典型的なReduxの使用がどのようにしてより多くのボイラープレートを持つJavaのような「セッター」関数へと進化するのか、そして、Reduxの上位レベルで「推奨される」抽象化を行い、初心者にとって使いやすく、学びやすくするための懇願とも言える深い洞察。一読の価値あり。
Reduxアーキテクチャ
大規模なReduxアプリケーションを構造化するためのパターンとプラクティス
アプリの状態を構造化する際に偶発的な複雑さを避ける
https://hackernoon.com/avoiding-accidental-complexity-when-structuring-your-app-state-6e6d22ad5e2a
Reduxストアの構造を整理するための優れたガイドラインReduxステップバイステップ:実際のアプリのためのシンプルで堅牢なワークフロー
https://hackernoon.com/redux-step-by-step-a-simple-and-robust-workflow-for-real-life-apps-1fdf7df46092
「偶発的な複雑さ」の記事へのフォローアップ。原則について議論Reduxについて知っておきたかったこと
https://medium.com/horrible-hacks/things-i-wish-i-knew-about-redux-9924abf2f9e0
https://www.reddit.com/r/javascript/comments/4taau2/things_i_wish_i_knew_about_redux/
Reduxでアプリを構築した後に学んだ、いくつかの優れたヒントと教訓。コンポーネントの接続、データの選択、アプリ/プロジェクトの構造に関する情報が含まれています。Redditでの追加の議論。React + Redux:クリーンで信頼性が高く、保守しやすいコードのためのヒントとベストプラクティス
https://speakerdeck.com/goopscoop/react-plus-redux-tips-and-best-practices-for-clean-reliable-and-scalable-code
アクションクリエーターをシンプルに保つ、リデューサーでのデータ操作、API呼び出しの抽象化、propsのスプレッドの回避など、さまざまなヒントと提案を含む優れたスライドショー大規模なWebアプリでの状態管理のためのRedux
https://blog.mapbox.com/redux-for-state-management-in-large-web-apps-c7f3fab3ce9b
イディオムReduxアーキテクチャの優れた議論と例。MapboxがこれらのアプローチをMapbox Studioアプリケーションにどのように適用するかについて。
アプリと例
React-Redux RealWorldの例:現実世界向けのTodoMVC
https://github.com/GoThinkster/redux-review
Reduxで構築された、フルスタックの「現実世界」のアプリケーションの例。JWT認証、CRUD、記事のお気に入り、ユーザーのフォロー、ルーティングなどを含むMediumのようなソーシャルブログサイトをデモしています。RealWorldプロジェクトには、同じプロジェクトとAPI仕様の異なるサーバーとクライアントの実装が互いにどのように比較されるかを示すことを特に目的とした、サイトのフロントエンドとバックエンドの他の多くの実装も含まれています。プロジェクトMini-Mek
https://github.com/markerikson/project-minimek
さまざまな便利なReduxテクニックを示すためのサンプルアプリ。https://blog.isquaredsoftware.com/series/practical-redux の「Practical Redux」ブログシリーズに付随するものreact-redux-yelp-clone
https://github.com/mohamed-ismat/react-redux-yelp-clone
FullStackReactによる「Yelp Clone」アプリの改作。ローカルステートの代わりにReduxとRedux Sagaを使用し、React Router v4、styled-components、その他の最新の標準も使用するように拡張されています。React-Boilerplateスターターキットに基づいています。WordPress-Calypso
https://github.com/Automattic/wp-calypso
新しいJavaScriptおよびAPI駆動のWordPress.comSound-Redux
https://github.com/andrewngu/sound-redux
React / Reduxで構築されたSoundcloudクライアントWebamp
https://webamp.org
https://github.com/captbaritone/webamp
ReactとReduxで構築された、Winamp2のブラウザ内での再現。実際にMP3を再生し、ローカルのMP3ファイルをロードできます。Tello
https://github.com/joshwcomeau/Tello
テレビ番組を追跡および管理するためのシンプルで楽しい方法io-808
https://github.com/vincentriemer/io-808
完全に再現されたWebベースのTR-808ドラムマシンへの試み
Reduxドキュメントの翻訳
- 中文文档 — 中国語
- 繁體中文文件 — 繁体字中国語
- Redux in Russian — ロシア語
- Redux en Español - スペイン語
- Redux in Korean - 韓国語
書籍
Redux in Action
https://www.manning.com/books/redux-in-action
リデューサーとアクションの基本、Reactでの使用、複雑なミドルウェアと副作用、アプリケーションの構造、パフォーマンス、テストなど、Reduxの使用に関する多くの重要な側面を網羅した包括的な書籍。Reduxを使用するための多くのアプローチの長所、短所、トレードオフをうまく説明しています。Reduxの共同メンテナーであるMark Eriksonによって個人的に推奨されています。The Complete Redux Book
https://leanpub.com/redux-book
本番環境で大規模な状態をどのように管理すればよいですか? なぜストアエンハンサーが必要なのですか? フォームバリデーションを処理する最適な方法は? これらの質問やその他多くの質問に対する答えを、簡単な言葉とサンプルコードを使って得られます。 Reduxを使用して複雑で本番環境対応のWebアプリケーションを構築するために必要なすべてを学びましょう。(注:現在、永久無料です!)Reactにおける状態の制御
https://www.robinwieruch.de/learn-react-redux-mobx-state-management/
もしあなたが著者の以前の書籍である「The Road to learn React」でReactを学んだことがあるなら、「Taming the State in React」は、Reactにおける基本および高度な状態管理について学ぶための完璧な組み合わせとなるでしょう。最初はReactなしでReduxのみを学習することから始めます。その後、この書籍ではReduxをReactアプリケーションに接続する方法が示されます。高度な章では、正規化、命名、セレクター、および非同期アクションについて学びます。最後に、ReactとReduxを使用して実際のアプリケーションをセットアップし、構築します。
コース
Stephen Griderによる「Modern React with Redux」(有料)
https://www.udemy.com/react-redux/
React Router、Webpack、ES2015を使用してアプリを開発しながら、このチュートリアルでReactとReduxの基礎をマスターしましょう。このコースでは、すぐに立ち上げることができ、Reactコンポーネントを深く理解し、Reduxを使用してアプリケーションを構築するために必要なコア知識を習得できます。Tyler McGinnisによる「Redux」(有料)
https://tylermcginnis.com/courses/redux/
Reduxを学ぶときは、その利点を理解できるほど大きなアプリの文脈で学ぶ必要があります。それがこのコースが巨大である理由です。より良い名前は「Real World Redux」かもしれません。「todoリスト」のReduxチュートリアルにうんざりしているなら、あなたは正しい場所に来ました。このコースでは、アプリケーションの状態を管理する上でReduxが特別な理由について詳しく説明します。楽観的な更新やエラー処理などのエッジケースをReduxがどのように処理するかを確認できるように、実際の「実世界」アプリケーションを構築します。また、Redux、Firebase、CSS Modulesとうまく連携する他の多くのテクノロジーについても説明します。Wes Bosによる「Learn Redux」(無料)
https://learnredux.com/
Redux、React Router、React.jsの背後にあるコアなアイデアを簡略化するシンプルな写真アプリ「Reduxstagram」を構築する過程を説明するビデオコースです。
その他のリソース
- React-Redux Links は、React、Redux、ES2015などに関する質の高い記事、チュートリアル、および関連コンテンツの厳選されたリストです。
- Redux Ecosystem Links は、Redux関連のライブラリ、アドオン、およびユーティリティのカテゴリ分けされたコレクションです。
- Awesome Redux は、Redux関連のリポジトリの広範なリストです。
- DEV Community は、Reduxプロジェクト、記事、チュートリアルを共有したり、Redux関連のトピックに関する議論を開始したり、フィードバックを求めることができる場所です。すべてのスキルレベルの開発者が参加できます。