码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uniapp全局组件全局使用(不在每个页面template使用,仅支持H5),函数式调用全局组件方法


     最简单的使用,在 main.js 编写如下代码,即可将 xxx 组件在每个页面显示

    1. // main.js
    2. // 引入组件
    3. import xxx from "@/components/xxx.vue";
    4. // 将该组件挂载在document.body下
    5. document.body.appendChild(new xxx().$mount().$el);

    函数式调用全局组件方法

    场景,某些 toast 组件需要如下方式使用

    1. <template>
    2. <toast ref="toast">toast>
    3. template>
    4. <script>
    5. export default {
    6. methods:{
    7. showToast(){
    8. this.$refs.toast.show();
    9. }
    10. }
    11. }
    12. script>

    经改造,最终使用方法为:

    this.$r.toast().show();

    实现方式:

    1、在 utils 目录下新建 render.js

    2、在 main.js 下将 render.js 绑定在 this 下

    1. // ...
    2. import render from "@/utils/render";
    3. Vue.prototype.$r = render;
    4. // ...

    3、在 render.js 内将组件绑定至全局

    1. // utils/render.js
    2. // 引入vue
    3. import vm from "vue";
    4. // toast组件
    5. import toast from "@/components/xxx/toast.vue";
    6. export default {
    7. /**
    8. * 全局toast弹窗
    9. */
    10. toast(){
    11. // 全局注册toast组件
    12. const toastCom = vm.component('toast',toast);
    13. // 获取uniapp根节点
    14. const uniappRoot = document.getElementsByTagName("uni-app")[0];
    15. // 初始化toast组件
    16. const toastComp = new toastCom();
    17. // 这里我每个组件内都有一个固定id,用来禁止同意组件生成多次
    18. if(document.getElementById(toastComp.id)){
    19. document.getElementById(toastComp.id).remove();
    20. }
    21. // 将toast组件添加在uniapp根节点上
    22. uniappRoot.appendChild(toastComp.$mount().$el);
    23. return toastComp;
    24. }
    25. }

    4、最后我们可以直接函数式调用组件方法与设置组件属性

    1. // 此show方法在toast组件的methods中定义
    2. this.$r.toast().show();
    3. // 此duration属性在toast组件的data中
    4. this.$r.toast().duration;

    嘿,愿你代码永无bug,人生永无坎坷!

    嘿,愿你代码永无bug,人生永无坎坷!

    嘿,愿你代码永无bug,人生永无坎坷!

    嘿,愿你代码永无bug,人生永无坎坷!

    嘿,愿你代码永无bug,人生永无坎坷!

    嘿,愿你代码永无bug,人生永无坎坷!

     

    广告:(提供学习机会)

           前端交流学习群:1063233592

           PHP学习交流群:901759097

           前后端学习交流微信群:加我微信,填写验证消息(前端),拉你进群

  • 相关阅读:
    Linux内核中ideapad-laptop.c文件全解析5
    驱动开发:内核远程线程实现DLL注入
    使用全局配置处理字段名和属性名不一致的情况
    CSDN的md编辑器如何输入上下标?公式和非公式的输入方式不一样
    深入理解.Net中的线程同步之构造模式(二)内核模式4.内核模式构造物的总结
    数据库系统原理与应用教程(070)—— MySQL 练习题:操作题 101-109(十四):查询条件练习
    【计算机组成与设计】Chisel取指和指令译码设计
    基于多头注意力机制卷积神经网络结合双向门控单元CNN-BIGRU-Mutilhead-Attention实现柴油机故障诊断附matlab代码
    基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)
    R可视化:plot函数基础操作,小白教程
  • 原文地址:https://blog.csdn.net/qq_41980461/article/details/126364932
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号