反应异步动作调度

时间:2019-02-13 17:36:28

标签: reactjs

在我的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));
  }
}

问题是在短暂的延迟后显示了加载微调器。我使用loadingsetProfileLoading()(布尔值)设置为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));
  }
}

0 个答案:

没有答案