uniapp之路由中携带参数跳转

目录

前言

一 路由跳转方式

1. 直接在 template中定义

2.直接在methods中定义

 二 携带参数

1.在template中定义

2.在methods里定义 

 3.+ 拼接

4.报错


前言

在我们写 uniapp 小程序时,时常遇到的就是路由携带参数进行跳转,这项功能似乎已成家常便饭一样,总是能遇到,虽说官网里面有吧,但这边呢,我还是决定写篇文章记录总结下,以便时间长了忘记了。先分析路由跳转的几种方式,在介绍怎么携带吧

话不多说,直接开干

一 路由跳转方式

1. 直接在 template中定义

直接在绑定事件后面携带自己要跳转的路径

<view class="content-item" @click="goplateNum('/subpkg/myAllList/plateNum')"></view>


methods中

 goplateNum(url) {
        uni.navigateTo({
          url: url
        })
      },

2.直接在methods中定义

在methods中URL 定义跳转路径

<view class="content-item" @click="goBalance"> </view>

methods

 goBalance() {
        uni.navigateTo({
          url: '/subpkg/myAllList/balance'
        })
      },

怎么说,一个是作为参数,另一个直接使用,这两种都可以实现。看自己喜欢就写哪种吧,两个都写也可以 ,既然路由跳转也这两种,那么携带参数的话,也对应上面的介绍

 二 携带参数

1.在template中定义

实话实说,第一种我不曾用过,因为携带参数跳转有时要传递很多数据,那肯定是要使用(encodeURIComponent)对参数进行编码,这样就会显得template代码用起来有点过多,我不太喜欢。至于这个方法,我是在官网里看到的,

就是直接在

<view class="content-item" @click="goplateNum('/subpkg/myAllList/plateNum')"></view>

item的话是 前面 v-for循环 数组中的item项 

/subpkg/myAllList/plateNum?item=${encodeURIComponent(JSON.stringify(item))

接收的话,是需要的页面的onload里面定义 

 onLoad(option) {
        // 接收传递的参数
        const item = JSON.parse(decodeURIComponent(option.item));

        console.log('上一个页面传递过来的参数', 'item');
        
      }

2.在methods里定义 

 <view @click="GoService(item)">{{item.stationName}}</view>


methods中定义 

GoService(item) {
        uni.navigateTo({
          url: `/subpkg/service/service?item=${encodeURIComponent(JSON.stringify(item))}`
        })
      },

 3.+ 拼接

let items = encodeURIComponent(JSON.stringify(index));  
        console.log(items)  
        uni.navigateTo({  
            url: '../AddAddress/index?itemlist=' + items,  
        })



接收页面

onLoad(e) {  
     console.log(e)  
     let obj = e.itemlist.replace("\"([^\"]*)\"", "$1");  
     this.list = JSON.parse(obj)  
     console.log(this.list)  
  },

4.会报 在位置0的JSON中意外的令牌u

“SyntaxError: Unexpected token u in JSON at  position 0” 

翻译过来就是 “SyntaxError:在位置0的JSON中意外的令牌u”

解决办法

在接收参数的那个页面里

 const connectorList = JSON.parse(decodeURIComponent(option.connectorList ? option.connectorList : '{}'));

写个 三元表达式

参数 ? 参数 : ‘{ }’   最后的 { } 可以改为 【 】

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp,可以使用uni.addInterceptor方法来监听路由跳转。具体实现步骤如下: 1. 在App.vue文件的onLaunch方法添加监听代码。可以参考引用\[1\]的代码示例。在该方法,使用uni.addInterceptor方法来拦截路由跳转方法,比如navigateTo、redirectTo、reLaunch、switchTab和navigateBack等。在success回调函数,调用watchRouter方法来处理路由跳转事件。 2. 在watchRouter方法,可以编写自己的逻辑来处理路由跳转事件。可以参考引用\[1\]和引用\[2\]的代码示例。 需要注意的是,监听路由跳转变化的代码应该写在onLaunch方法,以确保在uni-app初始化完成时触发。同时,也可以在onShow和onHide方法监听用户进入和离开小程序的事件。具体可以参考引用\[3\]的说明。 总结起来,要在uniapp监听路由跳转,可以使用uni.addInterceptor方法,并在App.vue文件的onLaunch方法添加相应的拦截器来实现。 #### 引用[.reference_title] - *1* [uniapp 监听路由跳转](https://blog.csdn.net/weixin_43743175/article/details/127313441)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uniapp切换路由监听导航跳转(在监听网络状态时非常常用)](https://blog.csdn.net/weixin_53339757/article/details/128475865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uniapp-生命周期/路由跳转](https://blog.csdn.net/zxc472504515/article/details/125429863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值