在Redux中的mapToDispatchToProps()函数的参数中,当'dispatch'不是一个函数时。

12 浏览
0 Comments

在Redux中的mapToDispatchToProps()函数的参数中,当'dispatch'不是一个函数时。

我正在使用redux、react-redux和react构建一个小型应用程序。但是在使用mapDispatchToProps函数与connect(react-redux的绑定)一起时,我遇到了TypeError错误,指示当我尝试执行生成的prop时,dispatch不是一个函数。然而,当我将dispatch作为prop调用时(参见所提供代码中的setAddr函数),它可以工作。

我很好奇为什么会这样,在redux文档中的示例TODO应用程序中,mapDispatchToProps方法的设置方式是相同的。当我在函数内部使用console.log(dispatch)时,它显示dispatch的类型是对象。我可以继续以这种方式使用dispatch,但在继续使用redux之前,我希望知道为什么会发生这种情况。我使用webpack和babel-loaders进行编译。

我的代码:

import React, { PropTypes, Component } from 'react';
import { connect } from 'react-redux';
import { setAddresses } from '../actions.js';
import GeoCode from './geoCode.js';
import FlatButton from 'material-ui/lib/flat-button';
const Start = React.createClass({
    propTypes: {
        onSubmit: PropTypes.func.isRequired
    },
    setAddr: function(){
        this.props.dispatch(
            setAddresses({
                pickup: this.refs.pickup.state.address,
                dropoff: this.refs.dropoff.state.address
            })
        )   
    },
    render: function() {
        return (
                        
                        
                        
                        
        );
    }
})
const mapDispatchToProps = (dispatch) => {
    return {
        onSubmit: (data) => {
            dispatch(setAddresses(data))
        }
    }
}
const StartContainer = connect(mapDispatchToProps)(Start)
export default StartContainer

0