感谢该教学:https://www.cnblogs.com/wangyang0210/p/14612806.html

单页面分享

如果只希望在某几个页面设置分享菜单,则可以直接在组件的script块处添加代码:

  1. <script>
  2. created(){
  3. // #ifdef MP-WEIXIN
  4. // wx.showShareMenu() //调用微信原生的API
  5. uni.showShareMenu({
  6. withShareTicket:true //或者待用uni封装的API 都可以
  7. })
  8. // #endif
  9. }
  10. </script>

这样只有添加了分享代码的页面才会显示分享菜单。

全局分享设置

如果希望所有页面都设置为分享,那肯定不能手动一个个添加,此时可以将分享代码提取到一个文件中,然后用 Vue的混入(mixin)方法,将分享代码添加到所有组件中。

Vue.mixin(Object)

混入方法传入一个对象,对象内一般是 JS 代码块,通过混入方法,这些代码将会被添加到所有组件的script块处。

将分享的代码提出到文件 share.js中,然后导出:

share.js

  1. export default {
  2. created(){
  3. // #ifdef MP-WEIXIN
  4. // wx.showShareMenu() //调用微信原生的API
  5. uni.showShareMenu({
  6. withShareTicket:true //或者调用uni封装的分享 API 都可以
  7. })
  8. // #endif
  9. }
  10. }

导出后在main.js中引用,然后用Vue.mixin()混入

main.js

  1. import App from './App'
  2. import share from './share.js'
  3. // #ifndef VUE3
  4. import Vue from 'vue'
  5. Vue.config.productionTip = false
  6. Vue.mixin(share) // 混入全局分享
  7. App.mpType = 'app'
  8. const app = new Vue({
  9. ...App
  10. })
  11. app.$mount()
  12. // #endif

查看效果
image.png
成功

额外

如果有些页面我不希望它被全局设置为可分享,就让他不能分享。此时可以调用另一个隐藏分享的API

hideShareMenu()

如果希望单个页面设置为不可分享,则添加以下代码: