SilurianYang / uni-simple-router

A simple, lightweight 'uni-app' routing plugin
https://v2.hhyang.cn/v2/
MIT License
749 stars 163 forks source link

微信小程序无法正确传递腾讯位置插件的参数 #387

Closed ariwori closed 1 year ago

ariwori commented 2 years ago

问题描述


const key = ''; //使用在腾讯位置服务申请的key
const referer = ''; //调用插件的app的名称
const location = JSON.stringify({
  latitude: 39.89631551,
  longitude: 116.323459711
});
const category = '生活服务,娱乐休闲';

wx.navigateTo({
  url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer + '&location=' + location + '&category=' + category
});

复现步骤 [复现问题的步骤]

  1. 启动 '...'
  2. 点击 '....'
  3. 查看

[或者可以直接贴源代码]

预期结果 [使用简洁清晰的语言描述你希望生效的预期结果]

实际结果 [这里请贴上你的报错截图或文字]

系统信息:

补充信息 [可选] [根据你的分析,出现这个问题的原因可能在哪里?]

ariwori commented 2 years ago

经过路由始终会包多一个query,插件那边就无法正确读取参数

SilurianYang commented 2 years ago

插件自身处理参数优先满足大多情况,你的情况可以使用自定义参数, 像这样:

const router = createRouter({
    platform: process.env.VUE_APP_PLATFORM,  
    resolveQuery:(options)=>options,
    parseQuery:({
        query={}
    })=>{
        for(let key in query){
            query[key]=decodeURIComponent(query[key])
        }
        return query;
    },
    routes: [...ROUTES],
});
ariwori commented 2 years ago

插件自身处理参数优先满足大多情况,你的情况可以使用自定义参数, 像这样:

const router = createRouter({
  platform: process.env.VUE_APP_PLATFORM,  
  resolveQuery:(options)=>options,
  parseQuery:({
      query={}
  })=>{
      for(let key in query){
          query[key]=decodeURIComponent(query[key])
      }
      return query;
  },
  routes: [...ROUTES],
});

感谢!不过我发现decodeURIComponent并没有解码,因为腾讯位置插件接受的是未编码的中文,编码过的中文无法识别会变成下面的样子

LRy260.png

暂时是先舍弃了可选的中文参数