ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
App.vue ``` onShow: function(e) { // #ifdef MP-WEIXIN //获取二维码携带的参数 let scene = decodeURIComponent(e.query.scene) scene = scene.split('&') let data = { //场景值 scene: e.scene } scene.forEach(item => { let arr = item.split('=') if (arr.length === 2) { data[arr[0]] = arr[1] } }) console.log('小程序场景值(App)', data,e.query) ``` -------------------------------------------------------------------- # 【uniapp】小程序的scene解码 今天在小程序接收scene的数据时,发现“:”冒号被解析成了“%”,后面运用到了decodeURIComponent()就很好地解决了问题,特此记录。 ``` /** * scene解码 */ scene_decode(e) { if (e === undefined) return {}; let scene = decodeURIComponent(e), params = scene.split(','), data = {}; for (let i in params) { var val = params[i].split(':'); val.length > 0 && val[0] && (data[val[0]] = val[1] || null) } return data; }, ``` # 微信小程序判断进入小程序的入口(场景值) 微信开发者文档:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html 1、场景值用于判断用户是从什么地方进入的小程序。 2、场景值主要是通过这两个函数来传递onLoauch 和 onShow函数: ``` onShow: function(options) { let option = JSON.stringify(options); console.log('app.js option-----' + option) console.log('app.js>>options.scene--------------------' + options.scene); var resultScene = this.sceneInfo(options.scene); console.log(resultScene); }, //场景值判断 sceneInfo: function(s) { var scene = []; switch (s) { case 1001: scene.push(s, "发现栏小程序主入口"); break; case 1005: scene.push(s, "顶部搜索框的搜索结果页"); break; default: scene.push("未知入口"); break; } return scene; } // 其中只有在传递 1020、1035、1036、1037、1038、1043 这几个场景值时,才会返回referrerInfo.appId ``` 使用场景,例如 ``` // #ifdef MP-WEIXIN //如果入口为1036, 1107, 1043,清除路由层级 if ([1036, 1107, 1043].includes(options.scene)) { this.$navigator.clear() } // #endif ```