Vue通过路由实现页面间参数的传递

 更新时间:2023年04月21日 15:44:48   作者:Tango糖果π  
这篇文章主要介绍了Vue通过路由实现页面间参数的传递,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

在Vue项目开发中,页面之间传递参数有很多种方法

1.路由传递

// params单个参数传递
// 设置参数 catid
this.$router.push({
    name: '/article/category', 
    params: {catid: '10'} 
})
// 获取参数 catid
this.$route.params.catid
 
// 多个参数传递
// 设置参数 catid
this.$router.push({
    name: '/article/category', 
    params: { 
        catid: '10', 
        pcatid: '1', 
        user: {
            username: 'admin', 
            password: '1234556'
        } 
})
// 获取参数 catid
this.$route.params.catid
this.$route.params.pcatid
this.$route.params.user.username
this.$route.params.user.password
this.$router.push({
    path: '/article/category', 
    params: {catid: '10'} 
})
// 获取参数 catid
this.$route.params.catid
// query多个参数传递
// 设置参数 catid
this.$router.push({
    path: '/article/category', 
    query: { 
        catid: '10', 
        pcatid: '1', 
        user: {
            username: 'admin', 
            password: '1234556'
        } 
})
// 获取参数 catid
this.$route.query.catid
this.$route.query.pcatid
this.$route.query.user.username
this.$route.query.user.password

2.sessionStorage/localStorage缓存的形式进行传递

// 设置catid参数
window.localStorage.setItem('catid','10')
// 获取catid参数
window.localStorage.getItem('catid')
 
// 设置catid参数
window.sessionStorage.setItem('catid','10')
// 获取catid参数
window.sessionStorage.getItem('catid')

注:

sessionStorage(会话存储):生命周期是在仅在当前会话下有效。及只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。但是sessionStorage在关闭了浏览器窗口后就会被销毁。 

localStorage(本地存储):生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失。localStorage除非主动删除数据,否则数据永远不会消失。不可跨浏览器共用。

3.父子组件之间的传值

  • 父组件给子组件传值(通过props属性)
  • 子组件给父组件传值(通过emit事件)

 4.使用vuex进行传值

export default new Vuex.Store({
  state: {
	  appkey: '',
	  infokey: ''
  },
  mutations: {
	  setAppkey(state,appkey){
		  state.appkey = appkey;
	  },
	  setInfokey(state,infokey){
		  state.infokey = infokey;
	  }
  },
  actions: {},
  modules: {}
});

其中 state 中为需要传递的值,mutation中为监控值变化并修改值的方法,通过store.commit()方法来触发状态变更以及store.state来获取状态对象。

store.commit("setAppkey",response.data.HttpData.data.appkey);
store.commit("setInfokey",response.data.HttpData.data.infokey);
console.log(store.state.appkey,store.state.infokey);

这里我们介绍通过路由实现页面间参数的传递

通过路由传递参数有两个缺点:

1.参数直接暴露,安全性不高;

2.参数过长时,影响地址栏美观。

但是路由传递参数这种方便比较直观,用起来也方便,可以直接把链接地址放到a标签的href中,也可以作为函数进行封装,实现页面跳转和参数传递。

路由传参的格式是: 

// 传参
this.$router.push({
    name:'home',
    params: {
        message: "",
        data: {}
    }
})
// 或
this.$router.push({
    path:'/home',
    query: {
        message: "",
        data: {}
    }
})
// 接参
this.$route.params.message
this.$route.query.message

注意:

  • 传参是this.$router,接收参数是this.$route 
  • 由于动态路由也是传递params的,所以在 this.$router.push() 方法中path不能和params一起使用,否则params将无效,接收参数页面会是undefined,需要用name来指定页面,也就是说,用query对应path(填写路径 /home),用params对应name(写路由js中对应的name,而不是路径)
  • 接收数据必须在页面加载完成后,也就是在mounted接收,而不是created。

query和params的区别:

  • query传值在浏览器地址栏传递数据可见,而params不可见
  • query配合着push的path,params配合着push的name进行地址的跳转

实例1:直接在元素中添加跳转地址和参数

第一步:在router里面的index.js文件中设置category路由路径和参数

第二步:在header.vue里,可以使用a的href直接添加跳转地址和参数

 第三步:在category.vue中接收参数

实例2:通过路由函数实现页面跳转和params参数传递

第一步:在router里面的index.js文件中设置category路由路径和参数

第二步: 在header.vue里,通过@click方法实现push函数调用

 第三步:methods中编写push调用函数

 

 第四步:在category.vue中接收参数

实例3:通过路由函数实现页面跳转和query参数传递

第一步:在router里面的index.js文件中设置category路由路径,但不设置参数

 第二步: 在header.vue里,通过@click方法实现push函数调用

 第三步:methods中编写push调用函数

 第四步:在category.vue中接收参数

到此这篇关于Vue通过路由实现页面间参数的传递的文章就介绍到这了,更多相关vue路由实现页面参数传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue项目每次发版后要清理浏览器缓存问题解决办法

    Vue项目每次发版后要清理浏览器缓存问题解决办法

    最近项目更新频繁,每次一更新客户都说还跟之前的一样,一查原因是因为客户没有清空浏览器的缓存,所以为了方便客户看到最新版本,开始调研再发布新版本后自动清理缓存,这篇文章主要给大家介绍了关于Vue项目每次发版后要清理浏览器缓存问题的解决办法,需要的朋友可以参考下
    2024-02-02
  • vue线上部署请求接口报错net::ERR_CONNECTION_REFUSED

    vue线上部署请求接口报错net::ERR_CONNECTION_REFUSED

    vue线上部署请求接口报错net::ERR_CONNECTION_REFUSED问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • vue+webrtc(腾讯云) 实现直播功能的实践

    vue+webrtc(腾讯云) 实现直播功能的实践

    本文主要介绍了vue+webrtc(腾讯云) 实现直播功能的实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 详解.vue文件解析的实现

    详解.vue文件解析的实现

    这篇文章主要介绍了详解.vue文件解析的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 基于Vue2实现印章徽章组件

    基于Vue2实现印章徽章组件

    这篇文章主要介绍了如何基于vue2实现简单的印章徽章控件,文中通过示例代码讲解详细,具有一定的学习价值,需要的朋友们下面就跟随小编来一起学习学习吧
    2023-10-10
  • vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)

    vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)

    我发现好多倒计时的插件,刷新都会变成从头再来,于是自己用vue2.0写了一个,感觉还不错,特此分享到脚本之家平台供大家参考下
    2017-03-03
  • VUE脚手架框架编写简洁的登录界面的实现

    VUE脚手架框架编写简洁的登录界面的实现

    本文主要介绍了VUE脚手架框架编写简洁的登录界面的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Vue3如何自定义v-permission权限指令

    Vue3如何自定义v-permission权限指令

    这篇文章主要为大家详细介绍了Vue3如何编写一个 v-permission 指令来根据用户权限动态控制元素的渲染,感兴趣的小伙伴可以参考一下
    2024-12-12
  • el-date-picker时间清空值为null处理方案

    el-date-picker时间清空值为null处理方案

    本文介绍关于Vue.js项目中时间选择器组件的问题,当选择后清空导致值变为null,进而引发后台接口报错,通过监听`overallForm.time`的值并设置为空数组,成功解决此问题,确保了数据正确性,同时,建议避免直接监听整个对象以优化性能,感兴趣的朋友一起看看吧
    2024-08-08
  • vue深度监听(监听对象和数组的改变)与立即执行监听实例

    vue深度监听(监听对象和数组的改变)与立即执行监听实例

    这篇文章主要介绍了vue深度监听(监听对象和数组的改变)与立即执行监听实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09

最新评论