Vue路由器参数对象类型更改浏览器返回按钮



我正在传递一个参数论坛,它是Vue.js中路由的对象(使用Vue路由器(

{
path: '/forum/:forum',
name: 'ForumView',
component: ForumView,
props: true
}

当我使用页面上的另一个链接(到论坛/帖子之类的东西(离开特定的论坛路线,然后尝试使用浏览器中的后退按钮返回表单页面时,我在控制台中收到以下错误

Invalid prop: type check failed for prop "forum". Expected Object, got String with value "[object Object]".

因此,路由器在使用路由器链接时会传递javscript对象。但当使用浏览器的后退按钮(访问历史记录(时,对象会转换为字符串。

好奇是否有解决方案,或者我不能/不应该将对象作为参数传递

"但是当使用浏览器的后退按钮(访问历史(时,对象被转换为字符串";

这并不完全正确。对象转换为字符串的速度要快得多——准确地说,是在导航到forum路由时。当您使用后退按钮时,根本并没有对象。只有动态CCD_ 2段被文本"替换的URL;[对象对象]";(只需查看浏览器的URL栏(

这就是通过路由器传递对象时的问题。因为即使您在历史模式下使用Router,并且浏览器的historyAPI在后台使用,路由器在调用history.pushState时也不会存储任何参数。它只推送URL。因此,如果您真的需要将某些信息传递给目标组件,则应该以动态段或查询字符串的形式将这些信息编码在URL(路由定义(中。。。

这种解决方案的另一个好处是,当用户复制/粘贴URL时,您的应用程序不会停止工作:(

或者,您可以使用类似Vuex的东西来创建共享状态,只传递一些简单的标识符,这些标识符更容易放在url/route中。。。

最新更新