我正在学习Redux React。如何使用mapDispatchToProps?我的代码如下所示
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { getAddress } from '../store/actions/addressActions';
class Dashboard extends Component {
componentDidMount = () => {
this.props.getAddress();
};
render() {
return <div>Hello { console.log(this.props) } </div>;
}
}
const mapStateToProps = state => ({
address: state.address
});
const mapDispatchToProps = dispatch => ({
getAddress
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(Dashboard);我得到如下所示的控制台输出

我在哪里做错了?如何正确使用mapDispatchToProps?
发布于 2019-03-26 14:40:51
您可以将mapDispatchToProps定义为object,也可以从mapDispatchToProps返回调度的函数而不是对象
使用第一种方法,您的mapStateToProps将如下所示
const mapDispatchToProps = {
getAddress
};使用第二种方法,它将如下所示
const mapDispatchToProps = dispatch => ({
getAddress: (...args) => dispatch(getAddress(...args));
});另外,由于您使用的是combineReducers,因此需要更改在mapStateToProps中访问状态的方式
const mapStateToProps = state => ({ address: state.addressReducer.address });发布于 2019-03-26 14:46:41
我认为,最初在store中,address是undefined。对,是这样?getAddress操作将设置地址值。
这是您遗漏的内容,1)您已经调度了操作。您可以使用以下任一方法
const mapDispatchToProps = dispatch => ({
getAddress: (...args) => dispatch(getAddress(...args));
});或
import { bindActionCreators } from "redux";
const mapDispatchToProps = dispatch => bindActionCreators({getAddress}, dispatch)发布于 2019-03-26 14:51:36
您应该稍微更新一下mapDispatchToProps方法。此外,您应该将其导出到编写测试。
import { bindActionCreators } from 'redux';
export const mapDispatchToProps = dispatch => ({
actions: bindActionCreators(
getAddress,
dispatch,
),
})https://stackoverflow.com/questions/55351040
复制相似问题