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项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
对vue生命周期的深入理解
Dec 03 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
ant design vue的form表单取值方法
Jun 01 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批量删除数据
2007/01/18 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
react-native动态切换tab组件的方法
2018/07/07 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python字符串替换示例
2014/04/24 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
python编程的核心知识点总结
2021/02/08 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
学生干部学习的自我评价
2014/02/18 职场文书
大学生党员自我评价
2015/03/04 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
vue+element ui实现锚点定位
2021/06/29 Vue.js
nginx 配置缓存
2022/05/11 Servers