【发布时间】:2021-02-25 14:27:51
【问题描述】:
我有三个 redux 操作。您可以在下面找到它们:
export const loadUser = () => (dispatch, getState) => {
const token = localStorage.getItem('twitter-token');
const config = {
headers: {
Authorization: `Token ${token}`,
},
};
axios
.get(`${url}/api/user`, config)
.then((res) => {
dispatch({ type: USER_LOADED, payload: res.data });
})
.catch((err) => {
dispatch({ type: USER_NOTLOADED });
});
};
export const loadTweets = () => (dispatch, getState) => {
const token = getState().auth.token;
const config = {
headers: {
'Content-Type': 'application/json',
Authorization: `Token ${token}`,
},
};
axios
.get(`${url}/tweet`, config)
.then((res) => {
dispatch({ type: TWEET_LOAD, payload: res.data });
})
.catch((err) => {
dispatch({ type: ADD_ERROR, payload: err.response.data });
});
};
最后一个
export const getComments = (id) => (dispatch, getState) => {
const token = getState().auth.token;
const config = {
headers: {
'Content-Type': 'application/json',
Authorization: `Token ${token}`,
},
};
axios
.get(`${url}/tweet/comments/${id}`, config)
.then((res) => {
dispatch({ type: GET_COMMENT, payload: res.data });
})
.catch((err) => {
dispatch({ type: ADD_ERROR, payload: err.response.data });
});
};
我已经将它们全部发送到App.js
useEffect(() => {
dispatch(loadUser());
dispatch(loadTweets());
dispatch(getComments('all'));
}, [dispatch]);
但在 loadUser 结束之前,loadTweets 正在执行。我希望他们被一个人派遣。我该如何处理?你能帮帮我吗?
【问题讨论】:
-
也许你可以等待你的 axios 请求,所以不要使用
axios.get().then().catch(),你可以使用const response = await axios.get('/'); -
没有帮助,bruh
标签: reactjs asynchronous redux dispatch