vue路由传参接收以及传参对象为对象时的问题及解决

yizhihongxing

下面是关于"Vue路由传参接收以及传参对象为对象时的问题及解决"的完整攻略:

路由传参

在Vue中,我们可以通过该框架提供的路由机制实现页面之间的跳转,而路由传参是一种常用的实现方式,可以让我们在不同组件之间传递数据。下面是两种常见的路由传参方式。

1. 动态路由传参

动态路由传参是通过URL参数来传递数据,参数可以包含在路由地址的路径中。例如:

const router = new VueRouter({
  routes:[
      {
          path:'/user/:id',
          component:User
      },
  ]
})

上述代码指定了一个名为"User"的组件,其中":id"表示参数,当用户访问"/user/123"时,参数"id"的值为"123",因此可以在组件中通过"$route.params.id"来获取参数值。

2. 查询路由传参

查询路由传参是通过URL查询参数来传递数据,参数可以包含在路由地址的查询参数中。例如:

const router = new VueRouter({
  routes:[
      {
          path:'/user',
          component:User
      },
  ]
})

上述代码指定了一个名为"User"的组件,当用户访问"/user?id=123"时,"id"为查询参数的键名,"123"为对应的值,可以在组件中通过"$route.query.id"来获取参数值。

传参对象为对象时的问题及解决

当我们想要在路由传参中传递复杂数据类型如对象时,我们会遇到组件之间数据不一致的问题,因为对象是引用类型。下面是示例代码,有效展示了这个问题:

let user={
    id:'001',
    name:'Tom'
};
this.$router.push({
    name:'User',
    params:{
        user:user
    }
})
export default {
    name:'User',
    props:{
        user:{
            type:Object,
            required:true
        }
    }
}

这段代码中,我们希望在路由传参中传递一个名为"user"的对象参数,但是,在组件内我们会发现,传递过来的参数和我们预期的不一致。原因在于我们通过路由传递的"user"对象被序列化成了字符串,再被解析为一个新的对象。因此,我们需要在路由传递对象时进行序列化操作,有两种解决方法。

1. $route.query

第一种方法是使用$route.query来代替$params,示例代码如下:

let user={
    id:'001',
    name:'Tom'
};
let query={
    user:JSON.stringify(user)
}
this.$router.push({
    name:'User',
    query:query
})
export default {
    name:'User',
    props:{
        user:{
            type:Object,
            required:true
        }
    },
    created() {
        this.user=JSON.parse(this.$route.query.user);
    }
}

这段代码中,我们将"user"对象进行JSON序列化并传递到"$route.query"中进行传递,在接收的组件中再进行解析操作。

2. sessionStorage

第二种方法是使用sessionStorage存储传递的对象,示例代码如下:

let user={
    id:'001',
    name:'Tom'
};
sessionStorage.setItem('user',JSON.stringify(user));
this.$router.push({
    name:'User'
})
export default {
    name:'User',
    props:{
        user:{
            type:Object,
            required:true
        }
    },
    created() {
        this.user=JSON.parse(sessionStorage.getItem('user'));
    }
}

这段代码中,我们将"user"对象进行JSON序列化并存储到sessionStorage中,页面跳转后在接收的组件中再进行解析操作。

总结

通过动态路由和查询路由方式,我们可以在Vue中进行路由传参。但是,当需要传递复杂数据类型时,我们需要进行序列化和解析操作来保持数据一致性。在这里,我们提供了两种解决方案,即使用$route.query和sessionStorage来存储和传递对象参数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue路由传参接收以及传参对象为对象时的问题及解决 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue中ref引用操作DOM元素的实现

    在Vue.js中,可以通过ref指令来获取DOM元素的引用,这使得我们可以在Vue组件中直接操作DOM元素。下面是实现这一功能的步骤。 步骤一:在DOM元素上添加ref指令 要获取一个DOM元素的引用,我们需要给它添加ref指令并指定一个名称。ref指令可以添加在任何元素上,如下所示: <template> <div> <but…

    Vue 2023年5月29日
    00
  • 浅谈Vue响应式(数组变异方法)

    浅谈Vue响应式(数组变异方法) 什么是Vue响应式 Vue.js是一款轻量级的、渐进式的JavaScript框架,它采用数据驱动视图的思想,通过对数据的绑定,前端开发者可以更加方便的进行数据的处理和控制。Vue.js的核心理念是响应式编程,也就是当数据发生变化时,我们的视图会自动更新。 数组变异方法 Vue将一些常用的JavaScript数组操作方法进行了…

    Vue 2023年5月27日
    00
  • JavaScript实现生成动态表格和动态效果的方法详解

    针对“JavaScript实现生成动态表格和动态效果的方法详解”这个话题,我将从如下几个方面进行详细讲解: 动态生成表格的基本方法 动态添加行和列的方法 动态调整表格样式的方法 动态效果的实现方法 下面依次详细讲解。 1. 动态生成表格的基本方法 要动态生成表格,可以通过javascript中的document.createElement()方法来创建一个表…

    Vue 2023年5月28日
    00
  • 详解vue渲染函数render的使用

    详解Vue渲染函数render的使用 简介 Vue提供了一个名为render的函数来代替模板语法,可以构建出与模板完全等效的虚拟DOM树。如同模板一样,render函数接受createElement函数作为第一个参数来创建虚拟DOM。但相比之下,render函数有更多的灵活性,也更加适合复杂的场景。 本篇攻略将详细讲解Vue渲染函数render及其使用方法,…

    Vue 2023年5月28日
    00
  • Vue动态组件实现异常处理方法

    下面就是Vue动态组件实现异常处理的完整攻略: 1. Vue动态组件介绍 Vue的动态组件是指通过动态地绑定组件的名称来实现动态加载不同组件的技术。Vue动态组件是Vue.js框架中的一项重要功能,它允许开发人员将应用程序拆分为基本组件,并根据需要在组件之间进行动态转换。 2. Vue中异常处理的重要性 在开发过程中,难免会出现各种各样的异常错误,如组件的数…

    Vue 2023年5月28日
    00
  • Vue基本使用之对象提供的属性功能

    Vue基本使用之对象提供的属性功能 Vue.js 是一款构建数据驱动的 Web 应用程序的前端框架,提供一系列的属性、指令和组件等功能,方便开发者进行页面开发和交互操作。 其中,Vue对象提供了一些常用的属性功能,本文将介绍Vue对象提供的属性功能的使用方法。 Vue实例中提供的属性 Vue提供了许多属性来控制实例中的数据和行为,以下是常用的一些属性: $d…

    Vue 2023年5月28日
    00
  • vue.js中$watch的用法示例

    下面是关于”vue.js中$watch的用法示例”的完整攻略: 1. 什么是$watch 在Vue.js中,我们经常需要使用到响应式数据,$watch是Vue.js提供的一个侦听器,用来监听某个数据项的变化,一旦该数据项发生变化,$watch负责触发回调函数,执行相应的操作。 2. $watch的基本用法 在Vue.js中,我们可以使用vm.$watch方法…

    Vue 2023年5月27日
    00
  • Vue事件处理的原理与过程详解

    Vue事件处理的原理与过程详解 1. Vue事件 在Vue中,事件可以绑定到元素上,这样就可以在发生特定事件时执行相应的逻辑。 2. Vue事件处理的原理 Vue事件处理的原理是基于DOM事件处理的。Vue通过v-on指令来监听DOM事件,当DOM事件发生时,Vue会触发相应的事件处理函数。 Vue在事件处理的过程中,会使用事件代理(Event Delega…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部