微信小程序使用navigateTo跳转带参字符过长时被截掉怎么处理

微信小程序wx.navigateTo跳转带参的字符长度是受限制的,如果字符过长,会被截取掉,这个时候我们怎样来处理呢,下面给出我试过的几种方法。

方法一:使用encodeURIComponentdecodeURIComponent对字符进行编码和解码
<!-- 跳转页 -->
wx.navigateTo({
   url: `../home/home?data=${encodeURIComponent(JSON.stringify(data))}`
})
<!-- 接收页 -->
onLoad(options) {
   let { data } = options
   data = JSON.parse(decodeURIComponent(data))
}
 方法二:如果你需要传递大量数据,可以考虑使用本地存储 wx.setStorage 或全局应用状态管理,然后在目标页面中读取这些数据。
<!-- 本地存储 -->
wx.setStorage({
  key: 'paramsKey',
  data: queryParams,
  success: function() {
    wx.navigateTo({
      url: '/home/home?key=paramsKey'
    });
  }
});

方法三EventChannel页面间事件通信通道

<!-- 跳转页 -->
wx.navigateTo({
   url: `/home/home/`,
   success: (res) => {
      res.eventChannel.emit('sendQueryParams', data)
   },
})

vue2接收页写法:

<!-- 接收页 -->
onLoad(options) {
   let eventChannel = this.getOpenerEventChannel();
   eventChannel.once('sendQueryParams',(params)=>{
      console.log('上一页面传来的数据', params);
   })
},

vue3接收页写法:

<!-- 接收页 -->
<script lang="ts" setup>
   import { getCurrentInstance } from 'vue'
   const { proxy } = getCurrentInstance()
   onLoad((options = {}) => {
      const eventChannel = proxy.getOpenerEventChannel()
      eventChannel.on('sendQueryParams', (params) => {
         console.log('上一页面传来的数据', params);
      })
   })
<script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值