【发布时间】:2019-05-26 15:21:04
【问题描述】:
我正在开发一个 react - redux 应用程序。现在我面临一个调度动作的问题。以下代码无法调度 generateReport 操作。
import React, { Component } from "react";
import { Button, Icon } from "semantic-ui-react";
import { connect } from "react-redux";
import { submit, getFormValues, isValid } from "redux-form";
import { generateReport } from "../actions/generateActions";
import { Link } from "react-router-dom";
const docsButtonStyle = {
position: "fixed",
marginBottom: "0.5em",
marginLeft: "0.1em",
bottom: 0,
left: 0,
animation: "back-to-docs 1.5s ease-in-out infinite",
zIndex: 6
};
class ButtonGroup extends Component {
generate = () => {
this.props.generateReport(this.props.values);
};
render() {
return (
<div style={docsButtonStyle}>
<Button.Group vertical>
<Button animated="fade" color="teal" onClick={this.generate}>
<Button.Content hidden>Generate</Button.Content>
<Button.Content visible>
<Icon name="chart bar" size="large" />
</Button.Content>
</Button>
</Button.Group>
</div>
);
}
}
const mapStateToProps = state => ({
values: getFormValues("privateForm")(state),
valid: isValid("privateForm")(state)
});
const mapDispatchToProps = dispatch => ({
generateReport,
remoteSubmit: () => {
dispatch(submit("privateForm"));
}
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(ButtonGroup);
generateActions.js
export const generateReport = values => async dispatch => {
console.log("test");
try {
dispatch(generateReportBegin());
const response = await axios.post(`${ROOT_URL}/submit`, values);
dispatch(generateReportSuccess());
} catch (error) {
}
};
如果我将连接功能更改为
export default connect(
mapStateToProps,
{generateReport}
)(ButtonGroup);
它有效。谁能告诉我为什么它在第一种情况下不起作用?谢谢。
【问题讨论】:
标签: reactjs redux react-redux