enderX
enderX
  • 发布:2022-08-02 11:37
  • 更新:2022-08-04 15:35
  • 阅读:1556

vue3 onShareAppMessage 在 hook 中使用不生效,是 bug 吗

分类:uni-app
export const useShare = (): UseShareInfoReturn => {  
  const routeInfo = useRoute();  
  const shareInfo = ref<ShareInfoInterface>({  
    path: routeInfo.value.path,  
    title: '发现一个有趣的小程序,快来看看吧',  
    desc: '',  
    imageUrl: '',  
  });  

  onShareAppMessage(() => {  
    const shareParams = {  
      ...shareInfo.value,  
      fail: (err) => {  
        console.error('share miniapp failed:', err);  
      },  
    };  
    return shareParams;  
  });  
}

在页面中调用 useShare,分享不生效;直接在页面中添加 onShareAppMessage 没问题

2022-08-02 11:37 负责人:无 分享
已邀请:
enderX

enderX (作者)

必须要在页面中显式引用 小程序分享的两个生命周期,才能生效

const share = useShare();  
share.onShareAppMessage;  
share.onShareTimeline;

这样的使用方式很怪异,也不符合组合式api的风格,应该算是 bug 吧

DCloud_UNI_FXY

DCloud_UNI_FXY

小程序平台,必须在注册页面时,主动配置onShareAppMessage, onShareTimeline才可以
组合式API是运行时才能注册,框架不可能默认给每个页面都开启这两个分享,所以必须在页面代码里包含这两个API的字符串,才会主动去注册。

  • enderX (作者)

    const share = useShare();

    ('onShareAppMessage');

    ('onShareTimeline');


    绝。其他小程序平台应该都是一样的吧?

    有点反直觉,不考虑在文档中略作说明吗?

    2022-08-04 18:29

该问题目前已经被锁定, 无法添加新回复