redux通过bindActionCreators预绑定,一种反模式?
问题描述:
在我的终极版应用程序,我经常发现自己使用下面的模式redux通过bindActionCreators预绑定,一种反模式?
// declare an action creator in a centralized/state management related location in the App (i.e. not the components/containers)
const myActionCreator1 =() => (dispatch) => { ... }
const myActionCreator2 = createAction(ACTION_2)
// then later in a mapDispatchToProps of a Container component
function mapDispatchToProps(dispatch) {
bindActionCreators({myActionCreator1, myActionCreator2}, dispatch);
}
在这些情况下,它是一个反模式预绑定行动创造者呢?因为只有1个调度员在对一家商店进行减价工作?
即
// actionCreators.ts
export const myActionCreators = {
myActionCreator: bindActionCreators(..., dispatch)
}
如果是这种模式有没有缺点,这将是为了简洁,好消息....
澄清
的简洁好处只会是显而易见的,当多个组件重新 - 使用相同的动作创作者。由于这些部件将不再需要上述
答
一个mapDispatchToProps为直线前进的情况下,如实施例中的功能connect
支持第二个参数“对象简写”语法。而不是创建一个mapDispatchToProps
函数接收dispatch
(可能使用bindActionCreators
内),你可以只传递一个对象全面行动的创作者直接connect
:
const actionCreators = {
addTodo,
toggleTodo
};
export default connect(null, actionCreators)(MyComponent);
该对象全面的行动创造者会自动通过bindActionCreators
运行,并致电this.props.addTodo("Buy Milk")
将适当派遣动作创建者。
我在我的博客文章Idiomatic Redux: Why use action creators?中讨论了这种方法的一些优点。
谢谢!我不知道这个redux功能,肯定会在规范情况下节省关键笔划 – echen