学习 redux 的官方案例 : https://github.com/reactjs/re...
发现有一个地方看不懂 :
点击当前 todo 切换完成状态, 对应触发的 action
是 TOGGLE_TODO
, 但是我发现并没有调用 dispatch()
, 为什么整个应用的 state
就变化了?
containers/VisibleTodoList.js
:
const mapStateToProps = (state) => ({
todos: getVisibleTodos(state.todos, state.visibilityFilter)
})
const mapDispatchToProps = ({
onTodoClick: toggleTodo
})
const VisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList)
在 mapDispatchToProps
里并没有调用 dispatch()
.
这里是怎么触发了 state 的变更?
文档里其实已经写了
这里说了
mapDispatchToProps
的参数如果是一个object
的话,里面的每个函数都会被当做一个action creator
,因此这个对象上的每个函数都会用dispatch
包一层,然后传给props
,因此你看到的props
上的onTodoClick
其实是已经有dispatch
了正好我之前看过redux的源码,给你讲下
再看看
wrapActionCreators
至于
bindActionCreators
是做什么的可以去看看文档了