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 相关文章推荐
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
vue实现拖拽进度条
Mar 01 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
vue elementUI批量上传文件
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
日本十大惊悚动漫
2020/03/04 日漫
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
初识ThinkPHP控制器
2016/04/07 PHP
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
js里面的变量范围分享
2020/07/18 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
Python实现选择排序
2017/06/04 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
python Xpath语法的使用
2020/11/26 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
物业保安员岗位职责
2014/03/14 职场文书
金融保险专业求职信
2014/09/03 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫