在我的React应用程序中,我遇到了异步等待操作的问题。
这是我的代码。
export const createOrUpdateProfile = (profileData, history) => async dispatch => {
try {
dispatch(setProfileLoading());
await axios.post('/api/profile', profileData);
history.push('/dashboard');
} catch(error) {
dispatch(profileError(GET_ERRORS, error.response.data));
}
}
问题是在短暂的延迟后显示了加载微调器。我使用loading
将setProfileLoading()
(布尔值)设置为true。加载仪表板时,将仅基于profileLoading
布尔值显示微调器。
但是在导航到仪表板之前,将分派一个异步操作来创建配置文件:
await axios.post('/api/profile', profileData);
然后只有导航发生:
history.push('/dashboard');
我为克服此问题所做的就是将history.push('/dashboard')
调用放在异步操作之前。我这样做对吗?在进行API调用之前进行导航似乎有些奇怪。有人可以帮我吗?
export const createOrUpdateProfile = (profileData, history) => async dispatch => {
try {
dispatch(setProfileLoading());
history.push('/dashboard');
await axios.post('/api/profile', profileData);
} catch(error) {
dispatch(profileError(GET_ERRORS, error.response.data));
}
}