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

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

Войти через центр авторизации
Похожие вопросы