Sono un javascript/redux/react beginner che costruisce una piccola applicazione con redux, react-redux, & reagisce. Per qualche ragione quando si usa la funzione mapDispatchToProps in tandem con connect (react-redux binding), ricevo un TypeError che indica che il dispatch non è una funzione quando cerco di eseguire il prop risultante. Tuttavia, quando chiamo dispatch come puntello (vedi la funzione setAddr nel codice fornito) funziona.'dispatch' non è una funzione quando argomento per mapToDispatchToProps() in Redux
Sono curioso di sapere perché questo è, nell'app TODO di esempio nei documenti di redux il metodo mapDispatchToProps è configurato allo stesso modo. Quando console.log (invio) all'interno della funzione dice che la spedizione è di tipo oggetto. Potrei continuare a utilizzare la spedizione in questo modo, ma mi sentirei meglio sapendo perché questo sta accadendo prima di continuare ulteriormente con redux. Sto usando webpack con babel-loader per compilare.
My 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
Cin cin.
è obbligatorio utilizzare questo metodo? Questo metodo si limita a capire cosa succede se non abbiamo bisogno di questo metodo? –
@MuneemHabib vedi la risposta di inostia su come non fornire questo metodo se non ne hai bisogno – Brandon