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?中讨论了这种方法的一些优点。

+0

谢谢!我不知道这个redux功能,肯定会在规范情况下节省关键笔划 – echen