【问题标题】:Do i need bindActionCreators?我需要 bindActionCreators 吗?
【发布时间】:2018-07-03 07:45:31
【问题描述】:

我正在阅读这篇文章,我注意到他没有使用redux 附带的bindActionCreators 方法,这是为什么呢?

我不需要吗?

这是帖子:https://medium.com/@stowball/a-dummys-guide-to-redux-and-thunk-in-react-d8904a7005d3

如果你不应该使用它,它为什么存在?我很困惑。

我已经按照他在帖子里说的做了:

function matchDispatchToProps(dispatch){
    return {
        fetchQp: (url) => dispatch(qpFetchData(url))
    };
}

使用bindActionCreators 执行此操作有什么区别?

【问题讨论】:

    标签: javascript reactjs redux react-redux redux-thunk


    【解决方案1】:

    这些例子都是等价的:

    function mapDispatchToProps(dispatch) {
        return {
            fetchQp : (url) => dispatch(qpFetchData(url))
        }
    }
    
    function mapDispatchToProps(dispatch) {
        return bindActionCreators({fetchQp : qpFetchData}, dispatch);
    }
    
    const mapDispatchToProps = {
        fetchQp : qpFetchData
    }
    
    // in all three cases, used as:
    export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
    

    我个人建议使用第三种形式(“对象速记”)。只需将一个充满动作创建者的对象作为第二个参数传递给 connect,Redux 将在内部自动使用 bindActionCreators - 没有充分的理由自己编写单独的 mapDispatch 函数。

    【讨论】:

      【解决方案2】:

      正如official documentation 所说:

      bindActionCreators 的唯一用例是当你想传递一些 动作创建者到一个不知道 Redux 的组件,而你 不想将 dispatch 或 Redux store 传递给它。

      你提到的帖子怎么样 - 那家伙确实将他的组件连接到Redux - 所以他没有明确使用bindActionCreators

      【讨论】:

      • 是的,这就是我的意思,我的问题应该是。 “为什么以及何时使用 bindActionCreators :)”但是如果我的整个应用程序都知道 redux,我就不需要它了?
      • @Charlie 如果您使用的是react-redux - 当然可以。实际上,您可以阅读react-reduxmapDispatchToProps.js 的源文件,它在connect github.com/reduxjs/react-redux/blob/master/src/connect/… 中使用——它们在内部使用bindActionCreators
      猜你喜欢
      • 2019-07-28
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 2015-04-16
      相关资源
      最近更新 更多