React-Router V4中StaticRouter 和 BrowserRouter的区别
据说服务端渲染的时候路由是无状态的,所以要用StaticRouter,而BrowserRouter使用 HTML5 提供的 history API (pushState, replaceState 和 popstate 事件) 来保持 UI 和 URL 的同步。
想问下StaticRouter和BrowserRouter的区别在于什么地方,无状态和有状态分别是什么意思?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
今天刚在看ssr,也是没搞懂static router。后来懂了。
其实是这样,因为服务器就是
请求->响应
这种结构,根据不同的url返回不同的html响应,可以理解成纯函数。你有状态,根本就没有意义。静态路由就是为了方便开发者,实际上自己做路由也完全可行。看官方的例子的意思就是,当路由到了<Redirect>组件的时候,这个时候服务器理应发送一个重定向的信号,这个时候在渲染<Redirect>组件的逻辑中就会判断是否有
staticContext
这个prop,如果有就会给这个prop添加一个属性,当渲染的函数运行完之后,外部的context
就会出现之前添加的属性,表示路由到了<Redirect>组件,需要将响应码变为301。