Маршрутизатор React перестал работать после добавления createBrowserHistory с сагой

Я изучаю React.js и столкнулся со следующей проблемой:

Мое приложение для реагирования перестало работать после добавления createBrowserHistory с помощью Saga.

По сути, я хочу перенаправлять пользователей на страницу корзины (/cart), когда я нажимаю кнопку «Добавить в корзину».

Пример:

Это домашняя страница:

введите здесь описание изображения

Когда я нажимаю кнопку «Добавить в корзину», он переходит к маршруту /cart. Однако он ничего не показывает, и в консоли нет ошибки.

введите здесь описание изображения

Я внес следующие изменения в свой код:

Добавлен пакет истории:

введите здесь описание изображения

Создал файл истории:

введите здесь описание изображения

Измененный файл App.js:

введите здесь описание изображения

Изменен файл саги. Я ожидаю перейти к маршруту /cart после выполнения некоторых заданий...

введите здесь описание изображения

Проблема здесь! Я хочу исправить проблему только в моем файле саги.

Я создал здесь запрос на извлечение, чтобы воспроизвести ошибку. Не стесняйтесь взглянуть на это.

https://github.com/willianfalbo/online-shoes-app/pull/ 1

Я готов наградить того, кто создаст для меня PR. Я также приму ваш ответ здесь!


person Willian    schedule 22.08.2020    source источник
comment
Зачем вообще нужна createBrowserHistory история? Когда ваш redux-saga выполняет вызов api и после успеха, не лучше ли вернуть управление вашим компонентам React для последующей обработки. Это означает, что вы можете легко изменить маршрут в своем React component вместо sagas, что в первую очередь сведет на нет использование createBrowserHistory.   -  person Prateek Thapa    schedule 22.08.2020
comment
Попробуйте изменить на yield call(history.push, '/cart');   -  person Aleksey L.    schedule 22.08.2020
comment
@AlekseyL., я пробовал так, но не получилось.   -  person Willian    schedule 23.08.2020
comment
@PrãtéékThápá, у вас есть пример?   -  person Willian    schedule 23.08.2020
comment
Вы можете проверить с помощью MemoryHistory и посмотреть, не работает ли он в этом контексте. Не решение, но может что-то прояснить   -  person Slbox    schedule 04.09.2020
comment
Спасибо @Slbox! У вас есть пример ссылки?   -  person Willian    schedule 04.09.2020
comment
@Willian вместо импорта createBrowserHistory импортируйте createMemoryHistory. Мы все еще на [email protected], но я думаю, что это должно работать и на 5.x.   -  person Slbox    schedule 04.09.2020


Ответы (1)


Похоже, версия react-router 5x совместима только с history.4x.

Понижение версии истории до 4.2.0 работает.

person Prateek Thapa    schedule 23.08.2020
comment
@Willian Я отправил PR. - person Prateek Thapa; 04.09.2020
comment
Фантастический братан! Спасибо за создание PR для меня! Отличная работа. Я не могу наградить вас сейчас, потому что мне нужно ждать 24 часа, чтобы сделать это. Кстати, когда я принял ваш ответ, StackOverflow автоматически наградит вас. Ваше здоровье - person Willian; 04.09.2020
comment
Мне просто интересно. Вы создаете его для производства или просто для практики? - person Prateek Thapa; 04.09.2020
comment
Это просто для практики, так как я начал изучать React в прошлом месяце. У вас есть какие-либо предложения? Любая помощь приветствуется =) - person Willian; 04.09.2020
comment
Я чувствую, что ты преувеличиваешь. Я написал несколько производственных приложений на React. Я не думаю, что вам нужно sagas для начала. Redux thunk подойдет. Кроме того, ваше приложение может обойтись использованием Context API, а не избыточностью. Короче говоря, ваше приложение может обойтись использованием Context API. Нет необходимости в редуксах, редукс-сагах и иммерах. - person Prateek Thapa; 04.09.2020
comment
Это был отличный совет, приятель! Я был очень разочарован использованием Redux/Saga. На мой взгляд, это слишком много сложного и запутанного. Определенно, я начну изучать Context API. Порекомендуете какой-нибудь онлайн-курс? - person Willian; 04.09.2020
comment
Вы можете взглянуть на это. Это не сложно, вы можете просто чтение документов. - person Prateek Thapa; 04.09.2020
comment
Спасибо тебе, друг! - person Willian; 05.09.2020
comment
Спасибо за это - просто спас мне жизнь :) - person Ege; 03.03.2021