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 +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
VUE+Element实现增删改查的示例源码
Nov 23 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 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
MYSQL数据库初学者使用指南
2006/11/16 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
js substr、substring和slice使用说明小记
2011/09/15 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
vue的mixins属性详解
2018/03/14 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
基于pandas中expand的作用详解
2019/12/17 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
Django数据库迁移常见使用方法
2020/11/12 Python
python中二分查找法的实现方法
2020/12/06 Python
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
应届生服务员求职信
2013/10/31 职场文书
总经理司机职责
2014/02/02 职场文书
太太口服液广告词
2014/03/20 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
2015双创工作总结
2015/07/24 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers