vue页面跳转传参的方法及其遇到的问题

6 篇文章 0 订阅
5 篇文章 0 订阅

在项目练手中遇到,点击右侧按钮跳转到它的子页面,并且需要传递参数给他的子页面,我是这样做的

1.设置子页面的路由

{
    path: 'userInfo/userSetting/:Parm',
    component: () => import('../views/user/userSetting'),
    name: 'userSetting',
    meta: { title: '用户设置' }
  }

2.主页面跳转方法

 handleSetting(row) {
    let tone = {
      id: row.id,
      name: row.name
    }
    let params = JSON.stringify(tone)
    this.$router.push({name:'userSetting', params: { toneParm:params }})
  },

所传的参数如果是对象一定要用JSON.stringify()先转为json格式,否则子页面在刷新时,参数会消失

3.子页面接收参数

watch: {
  $route(to) {
    //进入用户铃音设置刷新页面,防止页面不跳转
    if (to.name == "toneSetting") {
      let dataStr = JSON.parse(this.$route.params.toneParm);
      this.id = dataStr.id;
      this.name = dataStr.name;
    }
  },
},
created() {
  let dataStr = JSON.parse(this.$route.params.toneParm);
  this.id = dataStr.id;
  this.name = dataStr.name;
},

这时候就能使用传递过来的参数了

Vue3中,页面跳转传参和取参可以使用params和query两种方式。其中,params是隐式路由传参,使用name和params属性进行跳转和接收参数;而query是显式路由传参,使用path和query属性进行跳转和接收参数。具体实现可以使用$router.push()或者RouterLink组件进行跳转,使用useRoute()钩子函数获取路由信息,使用route.params或route.query获取传递的参数。下面是一个示例代码: // 页面跳转传参 // 隐式路由传参 <template> <button @click="goToItem">跳转到商品详情页</button> </template> <script> import { useRouter } from 'vue-router' export default { setup() { const router = useRouter() const goToItem = () => { router.push({ name: 'item', params: { id: 1 } }) } return { goToItem } } } </script> // 显式路由传参 <template> <button @click="goToItem">跳转到商品详情页</button> </template> <script> import { useRouter } from 'vue-router' export default { setup() { const router = useRouter() const goToItem = () => { router.push({ path: '/item', query: { id: 1 } }) } return { goToItem } } } </script> // 页面取参 <template> <div>{{ itemId }}</div> </template> <script> import { useRoute } from 'vue-router' export default { setup() { const route = useRoute() const itemId = route.params.id || route.query.id return { itemId } } } </script> --相关问题--: 1. Vue3中如何进行路由拦截和权限控制? 2. Vue3中如何进行路由懒加载? 3. Vue3中如何进行路由动画
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值