Tôi là người mới bắt đầu sử dụng javascript / redux / react đang xây dựng một ứng dụng nhỏ với redux, react-redux và react. Vì một số lý do khi sử dụng hàm mapDispatchToProps song song với kết nối (liên kết phản ứng-redux), tôi nhận được Lỗi TypeError cho biết rằng điều phối không phải là một chức năng khi tôi cố gắng thực hiện hỗ trợ kết quả. Tuy nhiên, khi tôi gọi điều phối là một công cụ hỗ trợ (xem hàm setAddr trong mã được cung cấp), nó hoạt động.
Tôi tò mò không biết tại sao lại như vậy, trong ứng dụng TODO ví dụ trong redux tài liệu, phương thức mapDispatchToProps được thiết lập theo cùng một cách. Khi tôi console.log (chuyển văn bản) bên trong hàm, nó nói rằng văn bản là đối tượng loại. Tôi có thể tiếp tục sử dụng công văn theo cách này nhưng tôi sẽ cảm thấy tốt hơn khi biết tại sao điều này lại xảy ra trước khi tôi tiếp tục thêm nữa với redux. Tôi đang sử dụng webpack với bộ tải babel để biên dịch.
Mã của tôi:
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
Chúc mừng.