Как эмулировать window.местоположение с помощью маршрутизатора React 5?

#reactjs #react-router #react-router-dom #react-router-v5

#reactjs ( реакция ) #реагировать-маршрутизатор #реагировать-маршрутизатор-dom #react-router-v5 #reactjs #react-маршрутизатор #react-router-dom

Вопрос:

У меня есть react SPA, который обслуживается Laravel.. Я хочу, чтобы SPA мог переходить на некоторые страницы, которые также обслуживаются Laravel..

Обновить:

В качестве примера … в моем приложении на основе coreui-react.. Я хочу разрешить пользователю открывать руководство пользователя, созданное с использованием vuepress. Я хочу иметь возможность открывать его на совершенно новой странице и не включать его в SPA. SPA отображается наhttps://test.local / руководство пользователя находится по адресу https://test.local/docs

Ссылка на = «/ docs» возвращает меня обратно в SPA, ссылка на =»//test.local /docs» также выполняет

Я также попытался разместить onClick={() => window.местоположение = окно.location.protocol «//» window.Расположение.имя хоста «/ docs»} внутри ссылки, но без изменений, за исключением того, что он выпадает с локального сервера разработки (порт 3000).. но если он находится в сборке, то он все равно попадает в ReactRouter

Есть предположение, что StaticRouter сделает это, но все примеры, которые я вижу, относятся к рендерингу содержимого на стороне сервера, которое будет использовать SPA, а не к переходу на страницу, доставленную сервером..

Я вроде как на пределе своих возможностей.. моя единственная мысль на данный момент — переместить SPA из «/» в «/ app» и вообще не обрабатывать «/» внутри SPA в надежде, что ReactRouter пропустит это

Похоже, это долгосрочная проблема в ReactRouter.. но в прошлом вы могли бы пробиться грубой силой сместоположение — но, похоже, это уже не так..

Ответ №1:

Если я правильно понимаю, вы можете использовать «история».:

 const history = useHistory();
  

вы должны импортировать useHistory из react-router-dom :

 import { useHistory } from 'react-router-dom'
  

и тогда вы можете использовать:

 history.push('/analytics')
  

Комментарии:

1. Итак, я думаю, мне нужно создать компонент для хранения этого?

2. Вы должны использовать маршруты в своем приложении, используете ли вы маршруты?

3. Маршруты есть как в SPA, так и в laravel.. на самом деле это выглядит как либо 1. Я должен направлять «неизвестные» маршруты в laravel (возможно, лучший СУХОЙ метод .. или обрабатывать маршруты верхнего уровня из laravel в SPA, направляя их обратно … раньше можно было просто использовать window. местоположение, но, похоже, это больше не работает

4. Я думаю, что это может быть решением blog.somewhatabstract.com/2020/03/02 / … но для этого потребуется немного подумать..

5. простым способом может быть выполнение действия onClick для ссылок, которые мне нужны, чтобы выйти из SPA и создать URL-адрес, используя var full = window. location.origin «путь»