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 相关文章推荐
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
vue实现简易的双向数据绑定
Dec 29 Vue.js
vue watch监控对象的简单方法示例
Jan 07 Vue.js
基于vuex实现购物车功能
Jan 10 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
ant design vue的form表单取值方法
Jun 01 Vue.js
Vue Element plus使用方法梳理
Dec 24 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使用GD实现颜色渐变实例
2015/06/02 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
简单实现php上传文件功能
2017/09/21 PHP
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
Python编程之属性和方法实例详解
2015/05/19 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python3人脸识别的两种方法
2019/04/25 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
使用Python实现分别输出每个数组
2019/12/06 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
《颐和园》教学反思
2014/02/26 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python