मैं एक जावास्क्रिप्ट / रिडक्स / रिएक्शन शुरुआत हूं, जो रिडक्स, रिएक्शन-रिडक्स और प्रतिक्रिया के साथ एक छोटा अनुप्रयोग बना रहा है। किसी कारण के लिए जब कनेक्ट (प्रतिक्रिया-रिडक्स बाइंडिंग) के साथ मिलकर में mapDispatchToProps फ़ंक्शन का उपयोग करते हुए मुझे एक TypeError प्राप्त होता है जो दर्शाता है कि डिस्पैच एक फ़ंक्शन नहीं है जब मैं परिणामी प्रोप को निष्पादित करने का प्रयास करता हूं। जब मैं प्रेषण को एक प्रस्ताव के रूप में कहता हूं (देखें दिए गए कोड में setAddr फ़ंक्शन) यह काम करता है।
मैं उत्सुक हूं कि ऐसा क्यों है, उदाहरण के लिए TODO ऐप में redux डॉक्स में mapDispatchToProps विधि उसी तरह सेटअप है। जब मैं फ़ंक्शन के अंदर कंसोल (प्रेषण) करता हूं तो यह कहता है कि प्रेषण प्रकार ऑब्जेक्ट है। मैं इस तरह प्रेषण का उपयोग करना जारी रख सकता हूं लेकिन मुझे यह जानकर बेहतर महसूस होगा कि ऐसा क्यों हो रहा है इससे पहले कि मैं रिडक्स के साथ आगे भी जारी रखूं। मैं संकलन करने के लिए बेबल-लोडर के साथ वेबपैक का उपयोग कर रहा हूं।
मेरा कोड:
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
चीयर्स।