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防抖与节流
Nov 24 Vue.js
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
vue3.0实现插件封装
Dec 14 Vue.js
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
Dec 19 Vue.js
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
vue实现轮播图帧率播放
Jan 26 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
解决vue-router的beforeRouteUpdate不能触发
Apr 14 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
一个数据采集类
2007/02/14 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Django REST framwork的权限验证实例
2020/04/02 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
python与js主要区别点总结
2020/09/13 Python
雪山饭庄的创业计划书范文
2014/01/18 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
大型公益活动策划方案
2014/08/20 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
会议邀请函
2015/01/30 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android