微信小程序全局分享转发控制实现——从此无需页面单独配置

时间:2020-04-01
本文章向大家介绍微信小程序全局分享转发控制实现——从此无需页面单独配置,主要包括微信小程序全局分享转发控制实现——从此无需页面单独配置使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

微信小程序没有全局分享配置,页面开启分享功能必须要在页面中定义分享事件函数 onShareAppMessage 才可以。如果项目中对页面分享的需求比较复杂点,那么默认的自定义分享会很麻烦的,而且还不一定能满足我们的需求,因此全局自定义分享配置的实现就非常有必要了。

本例结合隐式路由,可实现全局控制所有页面的分享配置,包括全局分享、页面默认分享、页面自定义分享,如下图所示:

如上,一部分页面可以进行自定义分享,另一部分进行页面默认分享(相当于页面开启分享功能,但是没有进行配置),其他大部分页面都进行全局分享配置。

示例代码:

 1 // app.js
 2 /**
 3  * 全局分享配置,页面无需开启分享
 4  * 使用隐式页面函数进行页面分享配置
 5  * 使用隐式路由获取当前页面路由,并根据路由来进行全局分享、自定义分享
 6  */
 7 ! function () {
 8   //获取页面配置并进行页面分享配置
 9   var PageTmp = Page
10   Page = function (pageConfig) {
11     //1. 获取当前页面路由
12     let routerUrl = ""
13     wx.onAppRoute(function (res) {
14       let pages = getCurrentPages(),        
15         view = pages[pages.length - 1];
16       routerUrl = view.route
17     })
18 
19     //2. 全局开启分享配置
20     pageConfig = Object.assign({
21       onShareAppMessage: function () {
22         //根据不同路由设置不同分享内容(微信小程序分享自带参数,如非特例,不需配置分享路径)
23         let shareInfo={}
24         let noGlobalSharePages=["index/index"]
25         //全局分享配置,如部分页面需要页面默认分享或自定义分享可以单独判断处理
26         if (!routerUrl.includes(noGlobalSharePages)){
27           shareInfo = {
28             title: "自定义全局分享",
29             imageUrl: wx.getStorageSync("shareUrl")
30           }
31         }
32         return shareInfo
33       }
34     }, pageConfig);
35     // 配置页面模板
36     PageTmp(pageConfig);
37   }
38 }();

如上,无需页面开启和配置,只需要在app.js中编写以上代码,即可对所有页面进行自定义分享配置,从此无需再去页面开启、配置分享转发。

原文地址:https://www.cnblogs.com/xyyt/p/12614181.html