コードには、バインドされたアクションの複数のオブジェクトをコンポーネントに渡す場所がいくつかあります。 オプションでアクションオブジェクトのリストをbindActionCreators
に渡すと便利です。
bindActionCreators([SomeActions, OtherActions], dispatch)
もちろん、重複するアクションは最後に処理されたアクションによって上書きされることに注意してください。
これは、ES7オブジェクトスプレッド提案で行うことができます。
bindActionCreators({ ...SomeActions, ...OtherActions }, dispatch)
または(バニラES6、 Object.assign
ポリフィルまたはバベルプラグインが必要)
bindActionCreators(Object.assign({}, SomeActions, OtherActions), dispatch)
または(ES5、 lodash
を想定)
var assign = require('lodash/object/assign');
bindActionCreators(assign({}, SomeActions, OtherActions), dispatch)
ああ素晴らしい、それはさらに簡単です。 ありがとう!
🙌
これは役に立ちます! ありがとう!
とても助かりました! :star2:
@gaearonこれをbindActionCreators
APIドキュメントのヒントセクションに追加する必要がありますか?
プルリクエストは大歓迎です:wink:
私は現在ドキュメントに積極的に取り組んでいないので、私の答えは同じです。「ドキュメントに何かを入れたい場合は、PRを送ってください」。
これが誰かに役立つかどうかはわかりませんが、アプリのアクションとreact-native-router-flux
のアクションを組み合わせようとしていたので、以下がうまくいきました。
import * as AppActions from './actions';
import { Actions } from 'react-native-router-flux';
function mapDispatchToProps(dispatch) {
return { actions: {...bindActionCreators(AppActions , dispatch), ...Actions } };
}
これが誰かに役立つかどうかはわかりませんが、アプリのアクションとreact-native-router-fluxのアクションを組み合わせようとしていました。
react-native-router-flux
のActions
はReduxとの共通点がないようで、おそらくmapDispatchToProps
に含めるべきではないため、これは少し混乱します。 コンポーネントで直接使用するだけです。
最も参考になるコメント
これは、ES7オブジェクトスプレッド提案で行うことができます。
または(バニラES6、
Object.assign
ポリフィルまたはバベルプラグインが必要)または(ES5、
lodash
を想定)