2017-12-15 9 views
1

私のアプリには2つのコンテナコンポーネントがあります。私はちょうど反作用を開始し、コンテナコンポーネントはコンポーネントの小道具にマップできるように、それぞれの減速機から状態オブジェクトを取得すると考えました。なぜ私のコンテナコンポーネントは他のレデューサーの状態オブジェクトを取得しますか?

私はコンソールにレデューサーが送信した状態を記録し、状態オブジェクトには自分のアプリで他のレデューサーによって送信されたデータも含まれていることがわかりました。レデューサーはコンテナコンポーネントにデータを送信するものなので、対応するレデューサーからのみデータを取得することになっていると思いました。

私が何か間違っているのか、それがどういうことか分かりません。

減速:

export default function(state=null, action){ 
    console.log(action); 
    switch(action.type){ 
     case 'BOOK_SELECTED': 
      return action.payload 
    } 
    return state; 
} 

コンテナコンポーネント:

function mapStateToProps(state){ 
    console.log("state from reducer",state); //contains data from the other reducer as well 
    return { 
     bookDetail : state.bookDetail 
    } 
} 

export default connect(mapStateToProps)(BookDetail); 
+0

「それぞれの還元剤」とはどういう意味ですか?あなたはコンテナを特定の減速機にリンクさせることを期待していますか? – azium

答えて

1

容器と減速が "接続" されていません。そのため、mapStateToPropsが存在します。

Reduxはコンテナに必要な状態の部分を知らないので、mapStateToPropsではすべての状態が提供され、それぞれが必要なものをすべて取ります。あなたの場合、コンテナにはstate.bookDetailが必要です。

希望します。

1

react-reduxのドキュメントをチェックすると、mapStateToPropsが最初の引数として完全なストアデータを受け取ることがわかります。すでに行っているように、接続されたコンポーネントに必要な小道具にそれをスライスするのはあなたの仕事です。あなたのコンポーネントは州からの小道具としてのみbookDetailを受け取ります。

あなたのコードは大丈夫ですが、私は減速機のスイッチステートメントをdefault clauseに書き換えます。

関連する問題