React-Router V4中StaticRouter 和 BrowserRouter的区别

发布于 2022-09-11 18:43:17 字数 202 浏览 18 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千笙结 2022-09-18 18:43:17

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文