2017-01-04 1 views
0

У меня есть приложение-ответ с использованием React-Router v4. Вне моего приложения у меня есть некоторые ссылки, которые необходимо обновить маршрутизатор. Как получить доступ к маршрутизатору извне реагирования? Я каким-то образом выставляю экземпляр BrowserRouter на объект окна?Обновление React Router 4 извне реагирует

+0

По обновлению, вы имеете в виду, что вам нужно перемещаться извне ваших компонентов? –

+0

Да. Моим временным решением было установить приложение, выставить метод в окне, который вызывает 'this.context.router.transitionTo()'. Не идеален, но работает пока. – Ben

ответ

0

tl; dr В настоящее время нет хорошего решения, и вы, вероятно, должны дождаться завершения API API v4, прежде чем приступать к реализации чего-либо. Существуют различные подходы к тому, как вы это сделаете для разных филиалов/выпусков проекта. Который будет работать в финальном выпуске, в основном будет угадать прямо сейчас.

Идеальный способ будет аналогичен v2/3. В этих версиях вам доступны browserHistory и hashHistory, которые вы можете импортировать по всему проекту и всегда иметь доступ к тому же экземпляру history.

Вы можете создать свой собственный экземпляр истории аналогичным образом.

// history.js 
import { createBrowserHistory } from 'history' 

// configure your history instance here if you need to 
export default createBrowserHistory() 

На протяжении всего проекта, вы сможете импортировать history экземпляр.

К сожалению, все компоненты маршрутизатора, вскрытых текущей версии v4 не позволяют передать в существующий экземпляр истории. Вместо этого все они создают для вас экземпляр history. Чтобы обойти это, вам нужно будет создать свой собственный компонент маршрутизатора, который займет ваш history экземпляр в качестве опоры. Как вы это сделаете, совершенно разные версии в разных версиях.