uniapp实现onShow获取页面传参

原理:通过页面栈数据,来获取页面传参数据

onShow() {
	let pagearr = getCurrentPages();//获取应用页面栈
	let currentPage = pagearr[pagearr.length - 1];//获取当前页面信息
	console.log('option:' , currentPage.options)//获取页面传递的信息
},
### UniApp实现分享功能并传递参数的方法 在 UniApp 开发环境中,为了实现在不同平台(如微信小程序、H5 页面)上的分享功能,并能够携带自定义参数,可以采用多种方法来确保这些参数能够在目标页面被正确接收和处理。 #### 使用 Vue 的全局混入设置分享配置 对于微信小程序而言,可以通过 Vue.js 提供的全局混入机制,在应用启动时统一注册分享事件处理器。这样做的好处是可以减少重复代码量,使得整个项目中的所有页面都能继承相同的分享逻辑[^1]: ```javascript // main.js 或者其他初始化文件中加入如下代码 import Vue from 'vue'; Vue.mixin({ onLoad(option) { // 处理首次加载时可能存在的分享参数 console.log('onLoad options:', option); // 如果有特定场景下的需求,则在此处进一步解析option对象内的数据 }, onShareAppMessage(res) { const shareData = { title: "默认分享标题", path: `/pages/index/index?shareId=${this.$store.state.userId}`, // 假设userId存储于Vuex store内 imageUrl: "/static/images/logo.png" }; return shareData; } }); ``` 上述代码片段展示了如何通过 `onShareAppMessage` 函数返回一个包含路径 (`path`) 和查询字符串 (`query string`) 的 JSON 对象,从而允许开发者指定当用户触发分享行为时所使用的 URL 及其附加参数。 #### H5 平台下获取签名信息用于 JS-SDK 调用 针对 H5 场景,由于涉及到微信内置浏览器的安全策略限制,通常需要服务器端配合提供必要的鉴权信息(即 appid, timestamp, nonceStr, signature)。值得注意的是,这里的 url 参数只需传入当前访问地址的基础部分而不应包含任何动态查询串[^2]: ```php <?php // PHP 后端示例:生成所需的签名信息 function getJsSign($url){ $timestamp = time(); $noncestr = createNonceStr(); // 此处省略了具体的加密算法以及与微信公众平台交互的过程 return array( "appId" => APP_ID, "timestamp" => strval($timestamp), "nonceStr" => $noncestr, "signature" => calculateSignature($timestamp,$noncestr), // 计算得到最终的签名值 "jsApiList" => ['updateTimelineShareData', 'updateAppMessageShareData'] ); } ?> ``` 前端 JavaScript 需要在页面加载完成后立即请求该 API 接口以获得最新的鉴权凭证,并将其作为 wx.config() 方法的一部分进行配置。 #### 解决 onLoad 生命周期函数无法捕获带参跳转的问题 有时会遇到这样的情况——即使已经在分享链接里附上了额外的 query parameter ,但在新打开的目标页中却读取不到预期的数据。这主要是因为某些情况下页面并非总是经过 onLoad 进入而是直接显示出来的;因此建议改用 onShow 来代替 onLoad 来尝试捕捉路由变化带来的参数更新[^3] : ```javascript export default { data(){ return{ shareId : '' } }, methods:{ handleParams(){ let pages = getCurrentPages(); let currentPage = pages[pages.length - 1]; if(currentPage.options && currentPage.options.shareId !== undefined){ this.shareId = currentPage.options.shareId; console.log(`Captured share id:${this.shareId}`); }else{ console.warn("No valid share ID found."); } } }, onShow:function(){ this.handleParams(); } }; ``` 这段代码说明了如何利用 onShow 生命周期函数替代 onLoad 来更可靠地截获来自分享链接或其他途径传来的参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值