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

В каком месте получать initState в Redux в моем случае?

В стейте Redux храню информацию о пользователе, при первом же заходе на сайт будет отправляться запрос на сервер за информацией по пользователю. Понимаю, что легче сделать в DidMount в рутовом компоненте, но как в моем случае это делать?
Мой index.js
ReactDOM.render(
  <Provider store={store}>
    <Router history={history}>{routes}</Router>
  </Provider>,
  document.getElementById("root")
);

Все роуты routes.js( по сути это и есть корень ):
const routes = (
  <Switch>
    <PrivateRoute exact path="/messages" component={MessagesPageContainer} />
    <RestrictedRoute exact path="/login" component={LoginPageContainer} />
    <RestrictedRoute exact path="/register" component={RegisterPageContainer} />
    <Route component={NoMatch} />
  </Switch>
);

export default routes;


Есть действие получения данных о пользователи:
export const onInitUser = () => dispatch => {
  const capi = new UserApi();
  const res = capi.getUser();
  res.then(user => {
    dispatch({
      type: userActions.FETCH_INIT_USER,
      data: { user: user }
    });
  });
};
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Я обычно делаю так:
store.dispatch(clientInit());

ReactDOM.render(
  <Provider store={store}>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </Provider>,
  document.getElementById('root'),
);

В clientInit выполняются все действия необходимые для инициализации приложения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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