从外部更新React Router 4做出反应

时间:2017-01-04 17:14:15

标签: react-router

我有一个使用React-Router v4 的反应应用。在我的应用程序之外,我有一些需要更新路由器的链接。如何从反应之外访问路由器?我是否以某种方式在窗口对象上公开BrowserRouter实例?

1 个答案:

答案 0 :(得分:0)

tl; dr 目前还没有一个好的解决方案,您应该等到v4的API最终确定后才开始实施。对于如何为项目的不同分支/版本执行此操作,有不同的方法。哪个将在最终版本中起作用,现在大多数都是猜测。

理想的方式与v2 / 3类似。在这些版本中,您可以使用browserHistoryhashHistory,您可以在整个项目中导入该history// history.js import { createBrowserHistory } from 'history' // configure your history instance here if you need to export default createBrowserHistory() ,并且始终可以访问相同的history实例。

您可以以类似的方式创建自己的历史记录实例。

import history from './history'

history.push('/some-location')

在整个项目中,您可以导入history实例。

history

不幸的是,当前版本的v4公开的所有路由器组件都不允许您传入现有的历史记录实例。相反,它们都会为您创建一个$ echo Hello > somefile $ find . -name somefile ./somefile $ cat < $(find . -name somefile) Hello $ cat < <(find . -name somefile) ./somefile 实例。要解决这个问题,您需要创建自己的路由器组件,将$( )实例作为道具。在不同的版本中,如何做到这一点完全不同。