@Gorlaks
начинающий front-end разработчик

Как передать изменённые данные в хранилище redux другой компоненте если используется routing?

Здравствует. В общем когда я получаю с помощью ajax данные с сервера(авторизация, если успешно перейти на список работ пользователя) я закидываю их в хранилище, но потом после перехода на страницу пользователя, данные снова прежние(я читал что это из-за перезагрузки и прочее)
5c98c8f059acf851693054.png5c98c9183d964038527118.png
Вот сам reducer
5c98c95895b30910312752.png
и action
5c98c978227a4768410742.png
Главная
5c98cb1ae6e3e276575336.png
Так вот. когда пользователь отправляет написанные данные(авторизация), я отправляю их на сервер и мне приходит список его прежних сохранённых работ, и этот список мне нужно передать другой компоненте и перейти на его страницу(сразу после клика отправить), но проблема в том что хранилище после перехода вновь становится прежним.
нашёл что-то похожее на решение - это библиотека redux-router, но как только я её подключаю я получаю(неизвестная функция func), библиотека react-router, где раньше можно было взять syncHistoryWithStore и hashHistory вообще устарели и с ними пишет(такое-то не было экспортировано из react-router, хотя данные методы итак не подходят), нашёл
1 решение - это окутать кнопку тегом , но тогда по нажатию кнопку не работает ajax, т.е. просто сразу кидает на страницу.

В общем подскажите пожалуйста если кто знает как это решить, если это возможно.
  • Вопрос задан
  • 187 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
1. Для инициации перехода на новый роут без перезагрузки страницы, следует вызывать:
this.props.history.push('/user');
2. И справьте первый route на:
<Route exact path="/" component={Form} />
Если используете свойство render(в вашем случае в этом нет смысла), то передавайте аргументом свойства роутера:
<Route exact path="/" render={routeProps => <Form {...rotueProps} />} />

3. Никакой redux-router вам не нужен.
4. Не ленитесь изучать возможности библиотек с которыми работаете. Нативные ссылки не имеют никакого отношения к роутеру вашего приложения. Советую изучить исходный код всех компонентов библиотеки react-router-dom. Так у вас хоть будет понимание того как он работает.
5. Вы закомментили вызов const state = createStore();. Верните обратно.
6. Уберите из проекта JQuery. Для AJAX запросов используйте axios/superagent/fetch.
7. Запросы к API по-хорошему выполнять в redux middleware. Советую использовать redux-thunk
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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