我是一个构建一个小型应用程序的 javascript/redux/response 初学者,使用 redux、 response-redux 和 response。由于某种原因,当使用 mapDispatchToProps 函数与 connect (response-redux 绑定)一起使用时,我会收到一个 TypeError,表明当我试图执行结果道具时,分派不是一个函数。但是,当我将调度作为一个道具调用时(请参见提供的代码中的 setAddr 函数) ,它可以工作。
我很好奇为什么会这样,在 redux docs 中的 TODO 应用程序示例中,mapDispatchToProps 方法的设置方式是相同的。当我在函数内部调度时,它说调度是 object 类型。我可以继续使用派遣这种方式,但我会感觉更好,知道为什么会发生这种情况,然后我继续任何进一步的还原。我使用 webpack 和 babel-loader 来编译。
我的准则:
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 (
<div>
<div className="row">
<div className="col-xs-6">
<GeoCode ref='pickup' />
</div>
<div className="col-xs-6">
<GeoCode ref='dropoff' />
</div>
</div>
<div className="row">
<div className="col-xs-6">
<FlatButton
label='Does Not Work'
onClick={this.props.onSubmit({
pickup: this.refs.pickup.state.address,
dropoff: this.refs.dropoff.state.address
})}
/>
</div>
<div className="col-xs-6">
<FlatButton
label='Works'
onClick={this.setAddr}
/>
</div>
</div>
</div>
);
}
})
const mapDispatchToProps = (dispatch) => {
return {
onSubmit: (data) => {
dispatch(setAddresses(data))
}
}
}
const StartContainer = connect(mapDispatchToProps)(Start)
export default StartContainer
干杯。