Значение useSelector не изменяется сразу после выполнения реакции redux thunk - PullRequest
0 голосов
/ 05 августа 2020

У меня есть useSelector, который вернет мне значение, хранящееся в глобальном состоянии, у меня также есть асинхронное c действие с использованием response redux thunk, которое внутри него изменит значение состояния, однако, когда я вызываю свою функцию thunk и после его завершения значение useSelector, похоже, не обновляется немедленно, у него будет небольшая задержка ... Как я могу получить последнее значение из состояния после выполнения функции преобразователя?

// thunk
function savePageData() {
  return async(dispatch, getState) => {
    await fetch(...).then(res => dispatch(LOAD_DATA, res));
    dispatch(somethingelse);
  }
}

// main
const myPage = () => {
   const user = useSelector(state => return state.user);
   const dispatch = useDispatch();
   const onClick = async() => {
      await dispatch(savePageData());
      if (user.active).   // here the user after above dispatch is still the old state
      { ... }
   }
}

это будет работать таким образом

const onClick = async() => {
    return (_dispatch, getState) => {
      await dispatch(savePageData());
      if (getState().user.active).   // now user is latest, but is this a correct way and why?
      { ... }
    }
}

или так

const onClick = async() => {
      await dispatch(savePageData()).then(
        if (user.active).   // now user is latest, but is this a correct way and why?
         { ... }
      );
   }
...