質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

901閲覧

発行されたActionをどうやって対応するReducerに渡しているのか

ajigomi

総合スコア11

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/04/30 10:07

編集2019/04/30 10:16

はじめて、質問を投稿させていただきます。
4月から新卒としてWeb系企業に勤めています。

幸運なことに新規案件に携わることができ、とても楽しくエンジニア生活をスタートさせることができました。
今現在はReactとReduxを使って開発を行っていますが、そこでどうしても理解できないことがありましたので、それをご質問させていただきたいです。

複数のActionと複数のReducerが存在する場合、発行されたActionはどうやって自分自身が処理対象となっているReducerを特定しているのでしょうか?

先輩からは下記のように複数の互いに依存しないActionがある場合には、それ毎にReducerを作成し、Stateを変更する必要がある。ということで教わりました。
複数のReducerが存在する場合は、combineReducersでrootReducerを作成しcreateStoreに対して、渡してあげる必要があることも教わりました。

javascript

1 // Action 2 export const actionA = status => ({ 3 type: 'A_ACTION', 4 status 5 }) 6 7 export const actionB = status => ({ 8 type: 'B_ACTION', 9 status 10 }) 11 12 // Reducer 13 export const actionAReducer = (state = false, action) => { 14 switch(action.type) { 15 case 'A_ACTION': 16 return action.status 17 default: 18 return state 19 } 20 } 21 22 export const actionBReducer = (state = false, action) => { 23 switch(action.type) { 24 case 'B_ACTION': 25 return action.status 26 default: 27 return state 28 } 29 } 30

Reducerが1つであるうちは、Actionが発行された場合に適応されるReducerも1つであるため、「発行されたActionを元にReducerが変更を加える。」という説明が理解できましたが、複数のReducerが登場すると、いまいちこの説明だけでは腑に落ちません。

自分なりにもいろいろと書籍を購入しましたが、自分の知りたいところの説明は「発行されたActionを元にReducerが変更を加える。」という類似した文言でまとめられてしまっており、どうやった発行されたActionが自分自身を処理対象とするReducerを特定しているのか(もしくはそれを指定するような記述があるのか)がわかりませんでした。

稚拙な文章で申し訳ございませんが、ヒントでもよいのでご教授いただければ幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

答えは 「特定していない」 です。

発行されたアクションは,すべてのリデューサに対して放り込まれます。そのために switch 文による分岐で,該当しないときは default で元のままリターンする必要があるのです。

投稿2019/04/30 10:24

編集2019/04/30 10:25
mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ajigomi

2019/04/30 10:33

勝手に「特定されるものだ。」と思い込んでいました。 mpywさんの > 答えは 「特定していない」 です。 > そのために switch 文による分岐で,該当しないときは default で元のままリターンする必要があるのです。 という説明で、ものすごく腑に落ちました。 併せて、defaultの意味を正しく理解できていなかったことにも気がつくことができました。 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問