Задать вопрос
alex4answ
@alex4answ

Где загрузить начальные данные для состояния React + Redux?

Получаю начальное состояние из API в компонент-контейнере (smart component):
function App(props){
  useEffect(() => {
    if(!props.isLoaded){
      props.getInitialState();
    }
  });

  return <MyBlock data={props.data} />;
}

const mapStateToProps = store => {
  return { ...store};
};

const mapDispatchToProps = dispatch => {
  return {
    getInitialState: () => dispatch(getInitialState())
  };
};

export default connect(mapStateToProps, mapDispatchToProps)(App);


getInitialState - action creator:
function getInitialState() {
  return dispatch => {
    dispatch({
      type: 'GET_INITIAL_DATA'
    });

    fetch('url')
    .then(res => res.json())
    .then(data => {
      dispatch => {
        type: 'GET_INITIAL_DATA_SUCCESS',
        payload: data
      }
    });
    
  };
}

+- в рабочем проекте так, здесь накидал для наглядности

Правильный ли это подход?
Какие есть еще варианты?

Видел как люди пытаются делать запросы прямо в initialState в Редюсере, но мне кажется это не совсем верный и рабочий подход.
  • Вопрос задан
  • 202 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 2
@iordania
Вполне норм подход! Все запросы вы должны отпровлять в Action. Reducer же должен принимать тип экшона и пэйлоад который вы диспатчите в Action. Reducer должен быть чистой функцией
Ответ написан
profesor08
@profesor08
Можно сделать иначе, сначала получаешь данные, потом инициализируешь ими свое хранилище, потом инициализируешь реакт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽