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实现坐标拾取器功能示例
Nov 18 Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
vue-router定义元信息meta操作
Dec 07 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
前端vue+express实现文件的上传下载示例
Feb 18 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的宝库目录--PEAR
2006/10/09 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
express.js中间件说明详解
2019/03/19 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
vue框架中props的typescript用法详解
2020/02/17 Javascript
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python Flask-web表单使用详解
2017/11/18 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
python中pivot()函数基础知识点
2021/01/03 Python
门诊手术室工作制度
2014/01/30 职场文书
秘书英文求职信范文
2014/01/31 职场文书
关于教师节的广播稿
2015/08/19 职场文书