小程序 全局统一配置分享管理

前言

接手的小程序比较老了,现在要求,全部要可以分享。

代码巴拉看了一下,40-50多个页面,目前只有首页可以分享,一个个的改脑瓜子疼。疼是一个问题,问题还没解决是另一个问题。

分析

全局改的话,肯定要知道小程序的全局api

开发者工具 console中打印

微信自带的原生方法。主要看getxxx什么的

看到一个router,文档看一下。好像没有,开放社区也没有

还有一个router

 文档看下

 

wx.onAppRoute 这个可以用,

测试一下

// app.js

// 创建路由管理
const { router } =  require('./router');

wx.onAppRoute && wx.onAppRoute(res => {
    // beforeEach函数处理
  router.beforeEach(res)
})


//router.js


router.beforeEach = function (e) {
    console.log(e)
}
module.exports = {
    router
}

打印结果

好像获取不到当前页面的一些钩子(不过可以做一些钩子,比如传参自动修改标题头)

试试获取当前页面栈

// route.js

router.beforeEach = function (e) {

    const pages = getCurrentPages()
    const view = pages[pages.length - 1]
    
    console.log(view)
}

 有了,代码中的函数方法也能获取到

不能修改wx的原型,这个api不知道啥时候就没了,

业务逻辑也要跟着改一下

  1. 当前的页面栈有是否有 onShareAppMessage 分享方法,如果有这个方法那么当前页面可以分享,没有跳过不处理
  2. webview不用处理,当前的业务不需要(看个人情况)

代码如下

//router.js

router.beforeEach = function (e) {

    // 默认分享文案
    const pages = getCurrentPages()
    const view = pages[pages.length - 1]
    if (view && view.onShareAppMessage) {
        if (!view.onShareAppMessage()) {
            view.onShareAppMessage = () => {
                // 重写分享文案
                return {
                    title: "分享文案",
                    path: `/${view.route}`
                }
            }
        }
    }
}

 这样全局只要在页面中添加 onShareAppMessage 方法就可以了,如果需要定制化分享的话,写一个白名单 过滤掉当前的页面栈,不去重写就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值