Реакция реквизита становится пустой на первой транзакции - PullRequest
0 голосов
/ 17 апреля 2020

Я использую промежуточное программное обеспечение излишним обещанием Я пытаюсь передать значение в Propsx, чтобы заявить. Реквизит пуст в использовании. Как я могу перенести содержимое реквизита в состояние. Далее следует значение реквизита.

действие:

export function fetchBasket() {
  return dispatch => {
    dispatch({
      type: 'GET_BASKET',
      payload: axios.get('url', {
      })
        .then(response => response.data)
    });
  };
}

редуктор:

const initialState = {
  fetching: false,
  error: {},
  basket: []
};

export default (state = initialState, { type, payload }) => {
  switch (type) {

  case types.GET_BASKET_PENDING:
    return {
      fetching: true
    };

  case types.GET_BASKET_FULFILLED:
    return { 
      ...state,
      fetching: false,
      basket: payload.result,
    };

  case types.GET_BASKET_REJECTED:
    return { 
      fetching: false,
      error: payload.result
    };

  default:
    return state;
  }
};

использование в компоненте

useEffect(() => {
    props.fetchBasket();
    console.log(props.basket); // null :/
  }, []);

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

[введите описание ссылки здесь] [1] Если вы хотите иметь значения при первом запуске (Mount). получите здесь ==> useLayoutEffect , и это даст значения в useEffect () []. [uselayouteffect]: https://reactjs.org/docs/hooks-reference.html#uselayouteffect

0 голосов
/ 17 апреля 2020
useEffect(() => {
  props.fetchBasket();
  console.log(props.basket); // null :/
}, []);

Ваши реквизиты будут обновляться только в следующем цикле l oop события, чтобы использовать обновление данных перехватчиков реакции внутри useEffect, вам необходимо useReducer https://reactjs.org/docs/hooks-reference.html#usereducer

...