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使用vant中的checkbox实现全选功能
Nov 17 Vue.js
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
vue实现广告栏上下滚动效果
Nov 26 Vue.js
对vue生命周期的深入理解
Dec 03 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
详解Vue2的diff算法
Jan 06 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 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
linux下 C语言对 php 扩展
2008/12/14 PHP
php rsa加密解密使用详解
2015/01/14 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PDO::getAttribute讲解
2019/01/28 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
python中的装饰器详解
2015/04/13 Python
python 类详解及简单实例
2017/03/24 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
Python实现的购物车功能示例
2018/02/11 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python制作抖音代码舞
2019/04/07 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
企业内控岗位的职责
2014/02/07 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
学生自我评语
2015/01/04 职场文书
小学数学国培研修日志
2015/11/13 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers