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 elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
详解Vue的mixin策略
Nov 19 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
Vue+element-ui添加自定义右键菜单的方法示例
Dec 08 Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
vue3.0中使用element的完整步骤
Mar 04 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
ant design vue的form表单取值方法
Jun 01 Vue.js
vue实现在data里引入相对路径
Jun 05 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代码
2006/12/06 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
python获取从命令行输入数字的方法
2015/04/29 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
Python pip使用超时问题解决方案
2020/08/03 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
个人教师自我评价范文
2013/12/02 职场文书
校园新闻广播稿
2014/01/10 职场文书
课外小组活动总结
2014/08/27 职场文书
冰峪沟导游词
2015/02/09 职场文书
网络研修心得体会
2016/01/08 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
vue中data里面的数据相互使用方式
2022/06/05 Vue.js