uniapp怎么给所有的页面url拼上相同的参数?
需求: 项目是uniapp开发的vue2的H5项目,有一个需求是所有页面分享时需要带上同一个参数
问题:翻看了下文档,没有找到vue的beforEach这种全局导航守卫,所以该怎么给所有的页面url都拼上相同的参数呢?
补充:考虑到用户可能直接复制url的方式发给别人,所以想给所有页面跳转时加上参数,包括tabbar页面,而不是在微信jssdk的分享方法里封装这样。
大佬们,求教
回答:
这个分享的时候带同一个参数,如果是H5配置微信分享的话,你只需要封装一下分享方法里面的link默认携带这个参数就可以吧,如下:
*/export const stringifyUrlArgs = (url, params) => {
url += (/\?/).test(url) ? '&' : '?'
url += Object.keys(params).map(key => `${key}=${params[key]}`).join('&')
return url
}
export const share = async (config, prod) => {
await initSdk(prod) // 初始化sdk方法
wx.ready(() => {
// 兼容新老版本接口, 如不需要处理逻辑情况下, 调试好可以直接使用
const message = Object.assign({
title: document.title || '', // 分享标题
desc: '', // 分享描述
link: stringifyUrlArgs(window.location.href,{ param: '固定参数'}), // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: '' // 分享图标
}, config)
if (wx.onMenuShareAppMessage) {
// 微信文档中提到这两个接口即将弃用,故判断
wx.onMenuShareAppMessage(message) // 1.0 分享到朋友
wx.onMenuShareTimeline(message) // 1.0 分享到朋友圈
} else {
wx.updateAppMessageShareData(message) // 1.4 分享到朋友
wx.updateTimelineShareData(message) // 1.4 分享到朋友圈
}
})
}
回答:
如果你习惯使用vue的router,可以通过uni-simple-router这个库实现https://hhyang.cn/src/router/...
回答:
可以使用拦截器重写路由跳转的方法,下面是官网拦截器的示例,将request改为跳转的方法即可
uni.request({ url: 'request/login', //仅为示例,并非真实接口地址。
success: (res) => {
console.log(res.data);
// 打印: {code:1,...}
}
});
uni.addInterceptor('request', {
invoke(args) {
// request 触发前拼接 url
args.url = 'https://www.example.com/'+args.url
},
success(args) {
// 请求成功后,修改code值为1
args.data.code = 1
},
fail(err) {
console.log('interceptor-fail',err)
},
complete(res) {
console.log('interceptor-complete',res)
}
})
以上是 uniapp怎么给所有的页面url拼上相同的参数? 的全部内容, 来源链接: utcz.com/p/932761.html