微信小程序自带的分享方法需要单个页面进行操作,这时候就很不方便,公司项目分享每个页面转发携带的参数都是一样的,所以想着写个公共的
这是我参考的大佬的文章:微信小程序-全局分享、自定义分享_glorious_future的博客-CSDN博客_微信小程序全局分享
app.js(这里的代码要写在App() 的外面)
//定义变量 获取转发的一些参数
let config;
! function () {
var PageTmp = Page
Page = function (pageConfig) {
let routerUrl = ""
wx.onAppRoute(function (res) {
let pages = getCurrentPages(),
view = pages[pages.length - 1];
routerUrl = view.route
})
pageConfig = Object.assign({
onShareAppMessage: function () {
//需要单独写分享方法的页面
let noGlobalSharePages = ["pages/a/a", "pages/b/b"]
//分享的时候要携带的参数
let obj = {
userId: config.user_name
}
let value = encodeURIComponent(JSON.stringify(obj))
let shareObj = {}
console.log("share",config);
//判断当前页面是不是需要单独写分享方法的页面
if (!routerUrl.includes(noGlobalSharePages)) {
shareObj = {
title: '和信签',
path: '/pages/login/logs/logs',
imageUrl: config.picUrl + config.shareImg
}
}
return shareObj
}
}, pageConfig);
PageTmp(pageConfig);
}
}();
APP({
globalData:...,
onshow(){...}
})
定义全局变量,在小程序初始化的时候把我需要用到的this.globalData赋值到定义的变量(config)上面
App({
onLaunch: function () {
.......
//赋值
config=this.globalData;
......
},
globalData:{
shareImg:'....'
}
})
//用的时候就是 config.shareImg这样就行啦
还有,如果想在某个页面里面写个单独的分享方法,就在js里面写个普通的onShareAppMessage就可以啦
onShareAppMessage(){
return {
title:'我是一朵花',
path:'...',
imageUrl:'...'
}
}
这里有个小注意点,要是要实用全局配置,页面js里的分享方法onShareAppMessage(){}要删掉或者注释掉,要不是全局配置会被覆盖,不起作用。