vue3开发技巧包括全局注册自定义指令,全局注册组件

2023-11-13

一、全局注册自定义指令

vue3全局定义自定义指令 ,与vue2版本差别不大

// 文件级别
directive
   --focus
    	--index.js
   --index.js
main.js
// directive/foucs/index.js
// FFFocus指令名称
export default(app) => {
   app.directive('FFFocus', {
     mounted(el){
        el.focus()
     }
   })
}
// directive/index.js
import Focus from './focus'
export default(app) => {
  Focus(app)
}
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import directive from './directive'

const app = createApp(App)
directive(app)

然后就可以在vue页面使用了

<template>
	<div>
		<input type="text" v-FFFocus />
	</div>
</template>

1. 钩子函数

自定义指令提供的钩子函数

  • created:在绑定元素的 attribute 或事件监听器被应用之前调用。在指令需要附加在普通的 v-on 事件监听器调用前的事件监听器中时,这很有用。

  • beforeMount:当指令第一次绑定到元素并且在挂载父组件之前调用。

  • mounted:在绑定元素的父组件被挂载前调用。

  • beforeUpdate:在更新包含组件的 VNode 之前调用。

  • updated:在包含组件的 VNode 及其子组件的 VNode 更新后调用。

  • beforeUnmount:在卸载绑定元素的父组件之前调用

  • unmounted:当指令与元素解除绑定且父组件已卸载时,只调用一次。

mounted,updated 使用较多

2. 动态指令参数

// el , binding , vnode , prevVnode 
<p v-pin:[direction]= "leng" />

directives:{
  pin: {
    mounted(el, binding){
   		console.log( el )			// 当前节点
    	console.log( binding.arg ) 	 	// direction
    	console.log( binding.value )	// leng
  	}
  }
}

二、 全局注册组件

// 文件级别
components
	--app
		--index.vue
	--index.js
main.js
// components/index.js
import APP from './app'
const components = {
	install: function(Vue){
		Vue.component('App', APP)
	}
}
export default components
// main.js
import { createApp } from 'vue'
import App from './App.vue'
// 全局组件
import components from './components'

createApp(App).use(components).mount('#app')
<template>
  <div class="home">
    <App class="app" />
  </div>
</template>

三、v-for循环中绑定不同点击事件

<template>
  <div>
    <div v-for="(item, index) in items" :key="index">
      <button @click="setUpClick(item)">click me</button>
    </div>
  </div>
</template>

<script>
export default {
    data() {
        return {
            items: ['look', 'read', 'listen']
        }
    },
    methods: {
        setUpClick(value) {
            this[value]()
        },
        look() {
            console.log('look')
        },
        read() {
            console.log('read')
        },
        listen() {
            console.log('listen')
        }
    }
}
</script>

在这里插入图片描述

四、v-for循环中绑定不同class属性

<div v-for="(item,index) in checkList" :key="index" :class="isMargin(item.id)">
     动态绑定class:{{item.reward}}
</div>
<script>
export default {
    data() {
        return {
			checkList:[ {id: 1, reward: 'hello'}, {id: 2, reward:'world'} ]
        }
    },
    computed: {
		// 循环中使用计算属性,必须用封闭式返回
        isMargin() {
            return (index) => {
                if (index === 1) {
                    return 'in_week_top'
                } else if (index === 2) {
                    return 'in_week_left'
                }
            }
        }
    }
}
</script>

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3开发技巧包括全局注册自定义指令,全局注册组件 的相关文章

随机推荐

  • windwos11降级,重装Windows10

    windwos11降级 重装Windows10 序言 硬件信息 前提说明 制作U盘启动盘 修改电脑bios配置 重装系统 U盘启动 注意事项 驱动问题 序言 电脑到手查看安装的是Windows11家庭版系统 在视觉上整体感受更加圆滑柔顺 但
  • C++中动态数组实现

    实现动态数组 动态数组 示例代码 运行环境 运行效果 动态数组 动态数组Vector可以动态扩展内存 其采用连续的内存空间 当内存空间不足 便以原来的容量的2倍或者1 5倍成倍的扩展 将原有的数组元素拷贝到新分配的内存空间中 释放原有的内存
  • [Unity3D]呼风唤雨:天气插件UniSky的使用教程与案例

    UniSky是Unity3D的一款模拟环境天气的插件 使用它可以简单的实现呼风唤雨的各种功能 下载地址 请点击我 使用起来也非常的方便 引入Package后 注意路径必须是英文否则会出错 Project中会多一个文件夹 下面我们来简单的创建
  • 华为OD机试 【玩牌高手】(Java )

    题目 代码 import java util Scanner public class CardScoreCalculator public static void main String
  • 关于线性回归那些事儿

    1 如何理解线性回归中的方差齐性 在两组和多组比较中 每组都有很多数据 可以求出每组的方差 然后比较就行了 很容易理解 但是在线性回归中 有的人就不理解方差齐性是什么意思了 因为线性回归中自变量x不是分类变量 x取值很多 通常情况下 每个x
  • C++使用std::thread 多线程展开for循环,for循环并行计算

    比如说有一个for循环 需要迭代100次 来累加1 2 3 100计算其结果 创建10个线程 第一个线程累加1 2 10 第二个线程计算11 12 20等 那么如何优化呢 其实OpenMP库是可以直接调用的 只需要在for循环上面加一个指令
  • 搭建Node开发环境,Node.js的集成开发环境(IDE)搭建

    搭建Node开发环境 使用文本编辑器来开发Node程序 最大的缺点是效率太低 运行Node程序还需要在命令行单独敲命令 如果还需要调试程序 就更加麻烦了 所以我们需要一个IDE集成开发环境 让我们能在一个环境里编码 运行 调试 这样就可以大
  • Springboot结合线程池的使用

    1 使用配置文件配置线程的参数 配置文件 thread pool core size 100 max size 100 keep alive seconds 60 queue capacity 1 配置类 Component Configu
  • 【华为OD机试真题c++/java/python】农场施肥【2023 Q1A卷

    2023华为OD机试 刷题指南 点这里 华为OD机试 2023真题考点分类 点这里 题目描述 某农场主管理了一大片果园 fields i 表示不同果林的面积 单位 m 2 现在要为所有的果林施肥且必须在 n 天之内完成 否则影响收成 小布是
  • 数据库SQL千万级数据规模处理概要

    我在前年遇到过过亿条的数据 以至于一个处理过程要几个小时的 后面慢慢优化 查找一些经验文章 才学到了一些基本方法 综合叙之 与君探讨之 1 数据太多 放在一个表肯定不行 比如月周期表 一个月1000万 一年就1 2亿 如此累计下去肯定不行的
  • Android Studio Button 美化

    改变按钮Button控件的边角 填充颜色 边框颜色 步骤 在 res gt drawable 中新建一个 btn all shape xml
  • Unity——新输入系统Input System

    1 安装 安装 直接到包管理器Window gt Package Manager安装即可 安装后提示需要重启 重启后即可使用 注意 在Project Settings中的Player设置里将Active Input Handling设置为I
  • 计算鬼成像学习笔记一:简介

    这里写目录标题 1 何为鬼成像 1 1 传统光学成像 所见即所得 1 2 鬼成像 又称关联成像 1 2 1 桶探测器 1 2 2 CCD 1 2 3 空间分辨率 1 2 4 光源 1 2 5 纠缠光子 1 2 6 赝热光源 1 2 7 散斑
  • springboot maven 子模块没有java文件夹 或 pom.xml灰色

    1 pom xml灰色 2 子模块 modules 没有添加到父模块 报错
  • 大学【微机原理与接口技术】参考资料、该视频笔记

    该百度网盘链接 是我学习 微机原理与接口技术 的参考资料 感觉讲的不错 有需要评论区下发qq邮箱 我看到会发给你 该视频笔记参考我的博客 https blog csdn net weixin 42214698 category 115770
  • PPPoE原理与配置方法

    一 PPPoE原理 数字用户线路DSL Digital Subscriber Line 是以电话线为传输介质的传输技术 人们通常把所有的DSL技术统称为xDSL x代表不同种类的数字用户线路技术 目前比较流行的宽带接入方式为ADSL ADS
  • 从零开始的webpack生活-0x014:CustomLoader自定义loader

    0x001 概述 上一章我们讲了eslint loader的配置 常用类型的常用loader已经都讲完了 大体上其他的都大同小异 需要去各大loader的官方查阅用户手册就可以了 接下来将loader的本质和自定义loader 0x002
  • 30行Python代码实现3D数据可视化!非常惊艳!

    回顾 2D 作图 用赛贝尔曲线作 2d 图 此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的 有对赛贝尔曲线感兴趣的朋友们可以深入了解一下 在 matplotlib 中 figure 为画布 axes 为绘图区 fig
  • 教你用Navicat生成E-R图

    最近在弄毕业论文 导师让我在论文中插一些图 其中设计到之前数据库中表与表的关系图 开始本来想手动画一个 然后突然想到 是不是Navicat会自带这种功能呢 仔细一看 果然有 于是乎开始倒腾一番 在此记录一下 也方便需要的人 1 打开navi
  • vue3开发技巧包括全局注册自定义指令,全局注册组件

    文章目录 一 全局注册自定义指令 1 钩子函数 2 动态指令参数 二 全局注册组件 三 v for循环中绑定不同点击事件 四 v for循环中绑定不同class属性 一 全局注册自定义指令 vue3全局定义自定义指令 与vue2版本差别不大