gpt4 book ai didi

javascript - 在 redux-thunk 中调用另一个异步函数

转载 作者:行者123 更新时间:2023-12-03 13:35:07 24 4
gpt4 key购买 nike

我正在构建一个 React 应用程序并使用 redux-thunk 进行异步操作。我有两个函数 getActivities()createActivity() ,我想在成功调用后者后调用前者。但是,如果我将 getActivities() 放在 createActivity()then block 中,它就不会被调用(这是通过看不到控制台来证明的) .log(),我将其放入 getActivities() 中)。以下是这两个函数:

export const getActivities = () => dispatch => {
console.log('again');
return axios.get(ENV.stravaAPI.athleteActivitiesBaseEndPoint, autHeaders)
.then(resp => {
dispatch({type: actions.GET_ACTIVITIES, activities: resp.data})
})
.catch(err => {
if(window.DEBUG)console.log(err);
})
};

export const createActivity = data => dispatch => {

dispatch(setLoadingElement('activityForm'));
return axios.post(URL, null, autHeaders)
.then(resp => {
if (resp.status === 201) {
dispatch(emptyModal());
}
// I WANT TO CALL getActivities() HERE
dispatch(unsetLoadingElement('activityForm'));
})
.catch(err => {
if(window.DEBUG) console.log(err.response.data.errors);
dispatch(unsetLoadingElement('activityForm'));
});
};

如何在另一个内部调用一个?

最佳答案

为了从一个 Action 创建者内部调用另一个 Action ,您只需要调度dispatch(getActivities())

这样的 Action
export const createActivity = data => dispatch => {

dispatch(setLoadingElement('activityForm'));
return axios.post(URL, null, autHeaders)
.then(resp => {
if (resp.status === 201) {
dispatch(emptyModal());
}
dispatch(getActivities());
dispatch(unsetLoadingElement('activityForm'));
})
.catch(err => {
if(window.DEBUG) console.log(err.response.data.errors);
dispatch(unsetLoadingElement('activityForm'));
});
};

关于javascript - 在 redux-thunk 中调用另一个异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48359313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com