Задать вопрос
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 в Редюсере, но мне кажется это не совсем верный и рабочий подход.
  • Вопрос задан
  • 196 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
@iordania
Вполне норм подход! Все запросы вы должны отпровлять в Action. Reducer же должен принимать тип экшона и пэйлоад который вы диспатчите в Action. Reducer должен быть чистой функцией
Ответ написан
profesor08
@profesor08
Можно сделать иначе, сначала получаешь данные, потом инициализируешь ими свое хранилище, потом инициализируешь реакт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы