微信小程序-全局分享、自定义分享

初六复工,难以接受,我甚至能接受今天是我六十大寿但是我难以接受今儿是正月初六。

言归正传

年前写了个分享,还要所有的页面都要有分享,那我岂不是每个页面都要写一个onShareAppMessage?nonono,这不能这么干,这违背了我们少写一行是一行的理念。
所以,我得写个全局的分享,但是这个onShareAppMessage的触发点只有button和胶囊的三个点点,所以并不是简单的写个公共方法就能解决的事儿。

经过不懈的研究,写了以下demo,供大家参考。

首先呢这个方法得写在app.js里面

app.js

//这个function是要写在APP()的外面
!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={
    
    }
        //判断当前页面是不是需要单独写分享方法的页面
        if (!routerUrl.includes(noGlobalSharePages)){
    
    
            shareObj={
    
    
                title:config.text,
                path: 'pages/home/home?obj=' +value,
                imageUrl: config.ShareImg
            }
        }
        return shareObj
      }
    }, pageConfig);
    PageTmp(pageConfig);
  }
}();

APP({
    
    
    globalData:...,
    onshow(){
    
    ...}
})
这个方法就基本成型了

然后呢,我在写的时候遇到了个小问题,就是我在这个方法里面拿不到globalData的数据,所以我就定义了个全局变量,在小程序初始化的时候把我需要用到的this.globalData赋值到我定义的变量上面

let config;
APP({
    
    
    onLunch(){
    
    
        // 赋值
        config=this.globalData;
    },
    globalData:{
    
    
        user_name:'..',
        text:'...',
        ShareImg:'....'
    }
})
用的时候就是 config.text这样就行啦

这样的话,想用这个方法得页面就不能在页面的js里面写onShareAppMessage了,不然会把app.js里面的分享方法给覆盖掉

还有,如果想在某个页面里面写个单独的分享方法,就在js里面写个普通的onShareAppMessage就可以啦

mine.js

onShareAppMessage(){
    
    
    return {
    
    
        title:'我是一朵花',
        path:'...',
        imageUrl:'...'
    }
}

这就大功告成啦!!

猜你喜欢

转载自blog.csdn.net/glorious_future/article/details/113851260