2017-01-21 13 views
7

私はしばらく@connectアノテーションを使用していて、mapStateToPropsmapDispatchToPropsに切り替えることにしました。mapDispatchToPropsの使用方法はthis.props.dispatchを使用してアクションをディスパッチするときだけです

私はthis.props.dispatch(xxx)をどこにでも呼び出すことができるときにmapDispatchToPropsのポイントが何であるか疑問に思っています。

私はまた、いくつかのレポを反応させると、それは初心者の質問のように聞こえる場合、彼らはまた、mapDispatchToProps

申し訳ありませんを使用していない参照してください。

答えて

8

はい、確かにprops.dispatch()をコンポーネントで直接使用できます。しかし、そのコンポーネントは、Reduxアプリケーションの一部であることを「認識」しています。これは、明示的に物事を「ディスパッチ」しようとしているからです。

一方、アクションクリエータ関数を一貫して使用すると、コンポーネントは単にthis.props.doSomeThing()のようなものを呼び出しています。それは実際にReduxアプリに入っていることを「認識」しておらず、結果として再利用可能です。

私はちょうどWhen would bindActionCreators be used in react/redux?で同様の質問に答えて、Idiomatic Redux: Why use action creators?というトピックに関するより長いブログ記事を書きました。

+0

ファイル自体がコンポーネントの接続されたバージョンをエクスポートしていなかった場合、この回答は私にとって意味があります。私が主に見てきたパターンは、コンポーネントを宣言し、接続されたバージョンをエクスポートするファイルです。これは主な用途ではありませんか? – aaaaaa

+0

あなたの質問が分かりません。 'mapDispatch'関数やアクションクリエータのオブジェクトを第2引数として渡さずに' connect() 'すると、コンポーネントには' this.props.dispatch'が与えられます。 – markerikson

+0

私はあなたのコメントに "応答しています"コンポーネントは今、 'それはreduxアプリケーションの一部です'と知っています。コンポーネントと同じファイルにコンポーネントを接続している場合、コンポーネントが宣言されていると、 'mapDispatchToProps'を使用すると便利な理由がわかりません。ちょうどもっと還元的な定型札のように思える。 – aaaaaa

関連する問題