mapDispatchToProps(扩展)(React)

在组件中,react-redux 插件提供了一个 connect 方法,用于组件和 redux 之间的关联:

import { connect } from 'react-redux';
通常 connect 都会接收一个 mapStateToProps 的函数作为参数,例如:

const mapStateToProps = state => {
    return {
        todos: filterTodos(state.todoList.todos, state.todoList.current),
        buttons: state.todoList.buttons,
        current: state.todoList.current
    }
}
export default connect(mapStateToProps)(TodoList)

实际上,除了 mapStateToProps 方法以外,connect 还可以接收第二个函数作为参数。

基本语法
基础语法如下:

const mapDispatchToProps = dispatch => {
    return {
        方法名1: (value) => dispatch(action对象方法(value)),
        方法名2: () => dispatch(action对象方法()),
    }
}
export default connect(mapStateToProps, mapDispatchToProps)(TodoList)

这个方法的作用,是可以将组件中所有需要 dispatch 触发的操作,全都集中到 mapDispatchToProps 中进行管理,然后通过
mapDispatchToProps 的返回值返回给组件的 props。action 对象需要传参时就传递
value,不需要的时候就可以不传。

例如,待办事项中的示例代码:

const mapDispatchToProps = dispatch => {
    // return 值会传递到组件的 props 属性身上
    return {
        addTodos: (value) => dispatch(addTodosAction(value)),
        doneChange: (value) => dispatch(doneChangeAction(value)),
        currentChange: (value) => dispatch(currentChangeAction(value))
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(TodoList)

这样处理后,我们在组件中就可以通过 props 获取到对应的方法,执行这些操作时也可以直接通过 props 调用这些方法即可。

例如:

新增待办事项:

this.props.addTodos(inputValue)
修改待办事项完成状态:

this.props.doneChange(item.id);
修改筛选状态:

this.props.currentChange(current)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值