文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

uni-app小程序分享功能实现

2023-08-16 21:47

关注

通过onShareAppMessage(OBJECT) 将小程序到分享微信聊天,onShareTimeline()将小程序分享到朋友圈。

api中的参数配置参考文档:https://uniapp.dcloud.net.cn/api/plugins/share.html

分为全局引入、单页面引两种方式

全局引入只需要在小程序main.js中引入一次,可以复用,便于维护;

单页面引入需要在每一个支持分享的页面都单独引入,重复代码多,维护不方便。

单页面逐个引入

onShareAppMessage: function() { // 分享到微信  // 更多参数配置,参考文档  return {    title: '分享',    path: '/pages/index/index'  }}onShareTimeline() { // 分享到朋友圈  return {    title: '分享',    path: '/pages/index/index'  }}

全局引入

新建mixin .js编写分享逻辑。获取当前路由时,微信支付宝有兼容性问题,需要进行适配

export const mixin = {  data () {    return {      share: {        // 转发的        title: '我是默认',        // 转发的路径,默认是当前页面,必须是以‘/’开头的完整路径,/pages/index/index        path: '',        //自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径,        //支持PNG及JPG,不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4        imageUrl: ''      }    }  },  // 分享到微信  onShareAppMessage: function () {    // 获取加载的页面    let pages = getCurrentPages(), view = pages[pages.length - 1]    //分享的页面路径    if(!this.share.path) {// #ifdef MP-WEIXIN    this.share.path = `/${view.route}`    //#endif    //#ifdef MP-ALIPAY    this.share.path = view.$page.fullPath    //#endif}    //转发参数    return this.share  },  // 分享到朋友圈  onShareTimeline () {    // 获取加载的页面    let pages = getCurrentPages(), view = pages[pages.length - 1]    //分享的页面路径    if(!this.share.path) {// #ifdef MP-WEIXIN    this.share.path = `/${view.route}`    //#endif    //#ifdef MP-ALIPAY    this.share.path = view.$page.fullPath    //#endif}    //转发参数    return this.share  },}

全局引入

// main.jsimport {mixin} from './utils/mixin.js'Vue.mixin(mixin)

概念

提高vue组件的可复用功能;一个混入的对象可以包含组件任意选项,当组件使用混入对象时,所有混入对象的选项都将被“混合“近该组件本身的选项

mixin中的数据是不共享的,每个组件中的mixin实例都是独立的

混入规则

钩子函数

同名的生命周期函数会合并为一个数组,都将被调用,混入对象的生命周期函数会在组件自身的同名钩子函数之前调用

// mixin.jsexport const mixin = {created() { console.log("先执行")}}// index.vueimport { mixin } from '@/mixin.js'export default {mixins: [mixin], created() { console.log("后执行") }}

数据对象合并(data)

混入对象值为对象的同名对象会被替换,优先执行组件内的同名对象;也就是组件内的同名对象将mixin混入对象的同名对象进行覆盖

// mixin.jsexport const mixin = { data() { return { msg: '会被覆盖' } }}// index.vueimport { mixin } from '@/mixin.js'export default {mixins: [mixin], data() { return { msg: '最终结果' } }}

普通方法合并

methods,components 和 directives 会被混合为同一个对象,两个对象键名冲突时,取组件对象的键值对

// mixin.jsexport const mixin = { methods: {fun1() { console.log('可以在index.vue中通过 this.fun1()调用')},fun2() {console.log('会被index.vue中的fun2覆盖')}}}// index.vueimport { mixin } from '@/mixin.js'export default {mixins: [mixin], methods: {fun2() {console.log('fun2最终结果')}}}

混入方式

局部混入:在需要的组件中单独引入,只能在当前引用了的组件中使用

import { mixin } from '@/mixin.js'export default {mixins: [mixin]}

全局混入:在main.js中引入,可以在组件中直接使用

import {mixin} from '@/mixin.js'Vue.mixin(mixin)

来源地址:https://blog.csdn.net/weixin_45559449/article/details/129315352

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯