noah.plus

複数の Action Creators を bindActionCreators() でまとめてバインドする(React/Redux)

2018-10-07

状況: todoActionCreatorscounterActionCreators という2つの action creators があるとき、これらをまとめて this.props.actions に割り当てたい。

bindActionCreators() で複数の action creators をバインドしたいときは、以下のようにスプレッド演算子を使って1つのオブジェクトにまとめる。

import * as todoActionCreators from './todoActionCreators'
import * as counterActionCreators from './counterActionCreators'
import { bindActionCreators } from 'redux'

function mapStateToProps(state) {
    return { todos: state.todos }
}

function mapDispatchToProps(dispatch) {
    return {
        // スプレッド演算子でまとめる
        actions: bindActionCreators({
            ...todoActionCreators,
            ...counterActionCreators
        }, dispatch)
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(TodoApp)

action の名前が衝突しないように気をつけたい。


noah.plus