Ich bin ein Javascript / Redux / React-Anfänger, der eine kleine Anwendung mit Redux, React-Redux und React erstellt. Aus irgendeinem Grund erhalte ich bei Verwendung der Funktion mapDispatchToProps in Verbindung mit connect (React-Redux-Bindung) einen TypeError, der angibt, dass der Versand keine Funktion ist, wenn ich versuche, die resultierende Requisite auszuführen. Wenn ich den Versand jedoch als Requisite aufrufe (siehe die Funktion setAddr im bereitgestellten Code), funktioniert es.
Ich bin gespannt, warum dies so ist. In der TODO-Beispiel-App in den Redux-Dokumenten wird die mapDispatchToProps-Methode auf die gleiche Weise eingerichtet. Wenn ich console.log (dispatch) innerhalb der Funktion habe, heißt es, dass dispatch vom Typ object ist. Ich könnte den Versand weiterhin auf diese Weise verwenden, aber ich würde mich besser fühlen, wenn ich wüsste, warum dies geschieht, bevor ich mit Redux fortfahre. Ich benutze Webpack mit Babel-Loadern zum Kompilieren.
Mein Code:
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
Prost.