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

作者分享了如何在小程序中避免重复编写onShareAppMessage,通过在app.js中创建全局函数并智能判断是否需要单独设置分享逻辑,解决了页面间分享配置的问题。同时提到如何获取globalData并在不同场景下使用。
摘要由CSDN通过智能技术生成

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

言归正传

年前写了个分享,还要所有的页面都要有分享,那我岂不是每个页面都要写一个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:'...'
    }
}
这就大功告成啦!!
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值