我有一个使用React-Router v4 的反应应用。在我的应用程序之外,我有一些需要更新路由器的链接。如何从反应之外访问路由器?我是否以某种方式在窗口对象上公开BrowserRouter实例?
答案 0 :(得分:0)
tl; dr 目前还没有一个好的解决方案,您应该等到v4的API最终确定后才开始实施。对于如何为项目的不同分支/版本执行此操作,有不同的方法。哪个将在最终版本中起作用,现在大多数都是猜测。
理想的方式与v2 / 3类似。在这些版本中,您可以使用browserHistory
和hashHistory
,您可以在整个项目中导入该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
实例。要解决这个问题,您需要创建自己的路由器组件,将$( )
实例作为道具。在不同的版本中,如何做到这一点完全不同。