объединение в цепочку множественных асин c диспетчеризаций с использованием редукса и редукса - PullRequest
0 голосов
/ 03 мая 2020

В моем компоненте реакции я хотел бы выполнить несколько асин c действий. У меня есть что-то вроде этого

// action creator
const fetchUserContext = response => ({
  type: ActionType.FETCH_USRE,
  payload: response,
});

// in component
useEffect(() => {
  async function fetchData () {
    const userContext = await dispatch(fetchUserContext());
    const shoppingInfo = await dispatch(fetchShoppingInfo(userContext.user_id));
  }

  fetchData();
}, []);

Это работает, но я чувствую, что имеет больше смысла получать userContext информацию из избыточного хранилища, а не получать ее непосредственно от создателя действия. Я пытался что-то вроде следующего, но это не работает.

// in component

import { useSelector } from 'react-redux'

const userContext = useSelector(state => state.userContext);

useEffect(() => {
  async function fetchData () {
    await dispatch(fetchUserContext());
    // it doesn't work since userContext is still undefined
    const shoppingInfo = await dispatch(fetchShoppingInfo(userContext.user_id));
  }

  fetchData();
}, []);

Я не знаю, какой лучший / правильный способ сделать это. Заранее всем спасибо за помощь.

...