【发布时间】:2021-07-27 05:51:32
【问题描述】:
在名为 Checkout 的 React 页面上,我有以下代码:
componentDidMount() {
let { org } = this.state;
const data = { organisation: org };
this.props.checkout_payment(data);
}
这里指的是一个 Redux 方法:
export const checkout_payment = async (data) => {
let token = getAuthToken();
const body = data;
try {
let result = await axios.post(`${url}/checkout_payment`, body, {
headers: { Authorization: `${token}` },
});
return result;
} catch (error) {
if (error.response === undefined) {
Notification({ message: error.message, success: false });
} else {
Notification({ message: error.response.data, success: false });
}
}
}
当代码从 Redux 方法到达 try 块时,我收到以下错误。知道我做错了什么吗?
Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
The above error occurred in the <Checkout> component:
in Checkout (created by Connect(Checkout))
in Connect(Checkout) (created by Context.Consumer)
in withRouter(Connect(Checkout)) (at pages/index.js:240)
in Route (at pages/index.js:236)
in PrivateRoute (at pages/index.js:437)
in Switch (at pages/index.js:320)
in Router (at pages/index.js:319)
in div (at pages/index.js:318)
in Base (created by Connect(Base))
in Connect(Base) (at src/index.js:91)
in Router (created by BrowserRouter)
in BrowserRouter (at src/index.js:90)
in Provider (at src/index.js:89)
我也尝试用下面的代码替换 try 代码块,但这没有任何区别。
return (dispatch) => {
axios
.post(`${url}/checkout_payment`, body, { headers: { Authorization: `${token}` } })
.catch((err) => {
if (err.response === undefined) {
Notification({ message: err.message, success: false });
} else {
return dispatch({ type: PAYMENT_ERROR, payload: err.response.data });
}
});
};
【问题讨论】:
标签: javascript reactjs redux react-redux