React-Router V4中StaticRouter 和 BrowserRouter的区别

据说服务端渲染的时候路由是无状态的,所以要用StaticRouter,而BrowserRouter使用 HTML5 提供的 history API (pushState, replaceState 和 popstate 事件) 来保持 UI 和 URL 的同步。

想问下StaticRouter和BrowserRouter的区别在于什么地方,无状态和有状态分别是什么意思?

阅读 6.8k
1 个回答

今天刚在看ssr,也是没搞懂static router。后来懂了。
其实是这样,因为服务器就是请求->响应这种结构,根据不同的url返回不同的html响应,可以理解成纯函数。你有状态,根本就没有意义。静态路由就是为了方便开发者,实际上自己做路由也完全可行。
看官方的例子的意思就是,当路由到了<Redirect>组件的时候,这个时候服务器理应发送一个重定向的信号,这个时候在渲染<Redirect>组件的逻辑中就会判断是否有staticContext这个prop,如果有就会给这个prop添加一个属性,当渲染的函数运行完之后,外部的context就会出现之前添加的属性,表示路由到了<Redirect>组件,需要将响应码变为301。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题