Vue.js vue-router@4.05对象参数 问题

Vue.js vue-router@4.05对象参数 问题,vue.js,vuejs3,vue-router4,Vue.js,Vuejs3,Vue Router4,router.push({name:{Order],参数:{obj:{}}) 推送obj:{}失败,路由接收到obj:'[object object]' 处境 我有这样的路线设置 { path: '/Order', name: 'Order', component: () => import("../views/Order.vue"), props: route => { return route.params.obj

router.push({name:{Order],参数:{obj:{}})
推送
obj:{}
失败,路由接收到
obj:'[object object]'

处境 我有这样的路线设置

{
    path: '/Order',
    name: 'Order',
    component: () => import("../views/Order.vue"),
    props: route => {
      return route.params.obj //  '[object Object]'
    },
 }
这导致在
Order.vue

预期结果 基于对象在旧版本中工作

我所测试的 我已经使用jest检查了传递给
router.push
的参数,它们看起来应该是:
{name:“Order”,params:{obj:{}


有什么想法吗?

将对象传递给
params
在Vue路由器中

它在路由器v3中使用了
$Router.push
-目标组件收到了对象。但是一旦用户开始使用浏览器导航(后退按钮)或复制/粘贴URL,这个解决方案就被破坏了(您可以尝试它-只需单击按钮,然后使用帧的后退和前进控件)

根据经验-如果要将任何内容传递给目标路由/组件,则必须将此类数据定义为路由定义中的参数,以便将其直接包含在URL中。替代方法是在存储中传递数据、查询参数或使用历史状态

Vue路由器v3也是如此,Vue路由器v4也是如此

注意


只是为了解释替代方案。我所说的“存储”并不仅仅是Vuex。我理解Vuex对于一些小型应用程序来说可能过于致命。我个人更喜欢现有的Vuex。而且您可以非常轻松地创建全局状态解决方案…

路由参数是URL中的字符串(即
/Route/:param
)。您认为这将如何序列化
{}
to a string?我也这么想,但似乎表明你可以将对象作为参数传递,这是两年前关于一个更老版本的问题时问到的。因为这是可能的,我想知道它是否仍然存在。感谢github问题,我继续构建了一个小型数据信使和beforeRouteEnter中间件,以从信使传递道具。绕过router.push在路由之间发送数据。我可以继续在url@ShaneAbramMendez你能分享这个实现吗?
{
    ...
    props: route => {
      return route.params.obj //  '{}'
    },
}