Skip to content

低版本Taro使用useShareTimeline

1. 修改依赖,需要在以下文件添加如下代码

javascript
    // node_modules/@tarojs/taro/dist/index.js
    // 在 useShareAppMessage 方法下面一行添加
    function useShareTimeline(callback) {
      usePageLifecycle(callback, 'onShareTimeline');
    }
    
    // 在底部导出
    var index = {
        // 这里有一堆原来的,只需要在 useShareAppMessage: useShareAppMessage 下面一行加一个
        useShareTimeline: useShareTimeline,
    }
    // 这里有一堆原来的,只需要在 exports.useShareAppMessage = useShareAppMessage; 下面一行加一个
    exports.useShareTimeline = useShareTimeline;
javascript
    // node_modules/@tarojs/taro-weapp/dist/index.js
    // 在 pageExtraFns 的定义中添加 onShareTimeline
    var pageExtraFns = ['onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onPageScroll', 'onTabItemTap', 'onResize'];
    
    // 在 Taro 的定义中导出
    var Taro = {
        // 这里有一堆原来的,只需要在 useShareAppMessage 下面一行加一个
        useShareTimeline: taro.useShareTimeline,
    }

==↑↑↑ 上面这一步,如果在该文件修改没有效果,试试修改同目录下的 index.esm.js 或者 taro.js,修改内容是一样的==

javascript
    // node_modules/@tarojs/taro/types/taro.hooks.d.ts
    // 添加 ts 类型,防止报错,ShareAppMessageObject 这个类型是我直接复制上面的,严谨的同学可以自己写
    /**
    * 分享到朋友圈
    */
    function useShareTimeline(callback: (obj: ShareAppMessageObject) => any)

2. 需要分享的页面调用

javascript
    useShareTimeline(() => ({
        title: 'XXX商城',
        // 最好有一个标识,分享到朋友圈中的小程序是单页模式,有很多限制,需要适配
        query: `from=timeline`,
    }));

3. 注意事项

小程序官方文档

单页文件遇到的问题,例如:
相关接口不进行静默授权,不能调用 Taro.login
后端需要对相关接口进行不校验登录权限

4. 使用 patch-package 将修改的内容进行记录

patch-package文档
patch-package简单使用说明