Я сделал библиотеку для решения этой проблемы.
npm: реакции-очереди-маршрутизатор
документ: https://tokky0425.github.io/react-queue-router/
Это, вероятно, то, что вы хотите.
(Если что-то не работает, пожалуйста, опубликуйте номер на github.)
По сути, проблема в том, что вы не можете отменить или остановить (например, e.preventDecault) изменение location.pathname, когда пользователь нажимает кнопки браузера вперед и назад.
Одним из решений является реализация маршрутизации не на основе location.pathname, а на основе другого значения, которое вы где-то сохранили вручную.
В случае библиотеки, о которой я упоминал выше, история location.pathname будет поставлена в очередь в массиве, а монтирование компонента будет выполняться один за другим в зависимости от значения массива
Это позволяет дождаться окончания анимации перехода.
(Поскольку изменение location.pathname просто означает, что путь будет помещен в очередь в массиве.)
Кажется, что React Router трудно выполнять эту работу, если его маршрутизация реализована на основе location.pathname.