我正在传递一个参数论坛,它是 Vue.js 中路由的对象(使用 vue-router)
{
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]".
所以路由器在使用router链接时会传递javascript对象。但是当使用浏览器的后退按钮(访问历史记录)时,该对象将被转换为字符串。
好奇是否有解决方案,或者我是否不能/不应该将对象作为参数传递
“但是当使用浏览器的后退按钮(访问历史记录)时,对象会转换为字符串”
……这并不完全正确。该对象会更快地转换为字符串 - 当您导航到您的forum
路线要准确。当您使用后退按钮时,根本没有任何对象。只有动态 URL:forum
段替换为文本“[object Object]”(只需检查浏览器的 URL 栏)
这是通过路由器传递对象时的问题。因为即使你使用Router
在历史模式和浏览器的history
API在后台使用,router调用时不存储任何参数history.pushState
。它仅推送 URL。因此,如果您确实需要将某些内容传递给目标组件,则该信息应该以动态段或查询字符串的形式编码在 URL(路由定义)中...
这种解决方案的另一个好处是,当用户复制/粘贴 URL 时,您的应用程序不会停止工作:)
或者你可以使用类似的东西Vuex
创建共享状态并仅传递一些简单的标识符,这更容易放入 url/route 中...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)