Vue3.0写自定义指令的简单步骤记录


Posted in Vue.js onJune 27, 2021

前言

vue中提供了丰富的内置指令,如v-if,v-bind,v-on......,除此之外我们还可以通过Vue.directive({})或者directives:{}来定义指令

在开始学习之前我们应该理解,自定义指令的应用场景,任何功能的开发都是为了解决具体的问题的,

通过自定义指令,我们可以对DOM进行更多的底层操作,这样不仅可以在某些场景下为我们提供快速解决问题的思路,而且让我们对vue的底层有了进一步的了解

第一步

在main.js

在src下简历对应的文件夹

import Directives from "@/Directives/index";// 自定义指令(@ 代表src)
const app = createApp(App);
app.use(Directives);
app.mount("#app");

Vue3.0写自定义指令的简单步骤记录

第二步

import copy from "./copy"; // 引入需要的指令

const directivesList = {
  copy // 挂载
};

const directives = {
  install: function (app) {
    Object.keys(directivesList).forEach((key) => {
      app.directive(key, directivesList[key]); // 注册
    });
  }
};

export default directives;// 抛出

第三步

在copy.js 写入我们的指令内容 Vue2 与Vue3只是一些生命周期函数修改

import { ElMessage } from "element-plus";
const copy = {
  mounted (el, { value }) {
    el.$value = value;
    el.handler = () => {
      if (!el.$value) {
        // 值为空的时候,给出提示
        ElMessage.warning({
          message: "您好,复制的值不能为空。",
          type: "warning"
        });
        return;
      }
      if (window.clipboardData) {
        window.clipboardData.setData("text", el.$value);
      } else {
        (function (content) {
          document.oncopy = function (e) {
            e.clipboardData.setData("text", content);
            e.preventDefault();
            document.oncopy = null;
          };
        })(el.$value);
        document.execCommand("Copy");
      }

      ElMessage.success("复制成功");
    };
    // 绑定点击事件
    el.addEventListener("click", el.handler);
  },
  beforeUpdate (el, {
    value
  }) {
    el.$value = value;
  },
  unmounted (el) {
    el.removeEventListener("click", el.handler);
  }
};

export default copy;

总结

到此这篇关于Vue3.0写自定义指令的文章就介绍到这了,更多相关Vue3.0自定义指令内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
vue 递归组件的简单使用示例
Jan 14 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
详解Vue的sync修饰符
May 15 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
vue.js Router中嵌套路由的实用示例
Jun 27 #Vue.js
vite+vue3.0+ts+element-plus快速搭建项目的实现
vue-router中hash模式与history模式的区别
Vue-Element-Admin集成自己的接口实现登录跳转
Vue + iView实现Excel上传功能的完整代码
Vue vee-validate插件的简单使用
Jun 22 #Vue.js
vue3使用vue-router的完整步骤记录
You might like
新版PHP将向Java靠拢
2006/10/09 PHP
第十二节--类的自动加载
2006/11/16 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
Python实现的数据结构与算法之链表详解
2015/04/22 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
简单介绍Python中的readline()方法的使用
2015/05/24 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
自我评价格式
2014/01/06 职场文书
开业庆典邀请函
2014/01/08 职场文书
医学求职信
2014/05/28 职场文书
小学语文教研活动总结
2014/07/01 职场文书
2016新年感言
2015/08/03 职场文书
教师岗位说明书
2015/09/30 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL