在Redux中的mapToDispatchToProps()函数的参数中,当'dispatch'不是一个函数时。
在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