为什么使用 bindActionCreator 而不是传递对象

IT技术 reactjs redux react-redux
2021-05-17 05:31:14
function mapStateToProps(state) {
 return { todos: state.todos }
}

function mapDispatchToProps(dispatch) {
 return { actions: bindActionCreators(actionCreators, dispatch) }
}

export default connect(mapStateToProps, mapDispatchToProps)(TodoApp)

为什么我会使用 mapDispatchToProps 和 bindActionCreators 作为第二个props,如果

export default connect(mapStateToProps, { getSthAction })(TodoApp)

这样它也能用吗?有什么区别吗?

1个回答

这些示例中的唯一区别是您的mapDispatch函数将导致this.props.actions.someAction(),而不是this.props.someAction(),因为您显式地将 的结果bindActionCreators作为名为 的字段返回actions

我个人建议始终使用“对象速记”版本 - 对我来说,实际上编写单独的函数从来没有充分的理由mapDispatch