一些日常使用杂碎的vue3知识点

2024-09-05 08:44

本文主要是介绍一些日常使用杂碎的vue3知识点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

nextTick

确保 DOM 更新完成后进行操作: 有时你需要在数据变化后立即对 DOM 进行操作,比如获取一个元素的高度或进行动画处理。在数据更新后,DOM 的更新是异步的。使用 nextTick 可以确保你的操作在 DOM 更新完成后执行。

<script setup>import { ref } from 'vue'const msg = ref(123)const divRef = ref(null)const hanleFn = async () => {msg.value = 456,console.log(divRef.value.innerHTML) //123
await nextTick()
console.log(divRef.value.innerHTML) //456
}</script><template><div @click="hanleFn" ref="divRef" >{{ msg }}</div></template>

teleport

Teleport 是 Vue 3 引入的一个组件,它用于将子组件或元素渲染到 DOM 中的其他位置,而不是它们的父组件所在的位置。这对于创建模态框、通知或工具提示等组件非常有用,因为这些组件通常需要在页面的其他部分显示,而不受父组件的结构影响。

// App.vue
<template><div><button @click="showModal = true">显示模态框</button><Modal v-if="showModal" @close="showModal = false" /></div></template><script setup>import { ref } from 'vue';import Modal from './Modal.vue';const showModal = ref(false);</script>
// Model.vue
<template><teleport to="body"><div class="modal-overlay" @click="closeModal"><div class="modal-content" @click.stop><h2>这是模态框标题</h2><p>这是模态框内容。</p><button @click="closeModal">关闭</button></div></div></teleport></template><script setup>import { defineEmits } from 'vue';const emit = defineEmits();const closeModal = () => {emit('close');}</script><style>.modal-overlay {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0, 0, 0, 0.5);display: flex;justify-content: center;align-items: center;}.modal-content {background: white;padding: 20px;border-radius: 5px;}</style>

watchEffect

立即运行一个函数,同时响应式地追踪其依赖,并在依赖更改时重新执行。
立即执行:当你调用 watchEffect 时,传入的回调函数会在 watchEffect 运行时立即执行一次。这有助于在组件或响应式数据初始化时立即运行某些逻辑。
自动追踪依赖:在回调函数内部,你可以访问响应式数据。watchEffect 会自动追踪这些数据的依赖关系,并在这些数据发生变化时重新执行回调函数。

<script>
import { ref, watchEffect } from 'vue';const count = ref(0);watchEffect(() => {console.log(`Count is ${count.value}`);});// 立即执行一次回调,输出: "Count is 0"count.value = 1; // 之后的变化会重新执行回调,输出: "Count is 1"
const stop = watchEffect(() => {}) // 当不再需要此侦听器时:
stop()</script>

组合式函数

组合式函数(Composition Functions)在 Vue 3 中是通过 setup 函数来创建的,用于将逻辑组织在一起。这些函数可以封装和复用组件逻辑,使代码更模块化和可维护。
组合式函数约定以 use 开头命名

//useCounter.js
import { ref } from 'vue';function useCounter() {const count = ref(0);function increment() {count.value++;}return {count,increment};}

自定义指令

除了 Vue 内置的一系列指令 (比如 v-modelv-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。

自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。

<script setup>// 在模板中启用 v-focusconst vFocus = {mounted: (el) => el.focus()}</script><template><input v-focus /></template>

指令钩子

一个指令的定义对象可以提供几种钩子函数 (都是可选的)

const myDirective = {// 在绑定元素的 attribute 前// 或事件监听器应用前调用created(el, binding, vnode) {// 下面会介绍各个参数的细节},// 在元素被插入到 DOM 前调用beforeMount(el, binding, vnode) {},// 在绑定元素的父组件// 及他自己的所有子节点都挂载完成后调用mounted(el, binding, vnode) {},// 绑定元素的父组件更新前调用beforeUpdate(el, binding, vnode, prevVnode) {},// 在绑定元素的父组件// 及他自己的所有子节点都更新后调用updated(el, binding, vnode, prevVnode) {},// 绑定元素的父组件卸载前调用beforeUnmount(el, binding, vnode) {},KKKK// 绑定元素的父组件卸载后调用unmounted(el, binding, vnode) {}}
对应的例子 点击下拉框显示 点击其他地方下拉框消失
const clickAwayDirective = KK{beforeMount(el, binding) {el.clickAwayHandler = (event) => {if (!(el === event.target || el.contains(event.target))) {binding.value(event);}};document.addEventListener('click', el.clickAwayHandler);},unmounted(el) {
KK
document.removeEventListener('click', el.clickAwayHandler);delete el.clickAwayHandler;}};export default clickAwayDirective;
//App.vue
template><div><button @click="toggleDropdown">Toggle Dropdown</button><div v-if="isDropdownOpen" v-click-away="closeDropdown" class="dropdown"><p>Dropdown Content</p></div></div></template><script setup>import { ref } from 'vue';import clickAwayDirective from './clickAwayDirective'; // 根据实际路径调整const isDropdownOpen = ref(false);function toggleDropdown() {isDropdownOpen.value = !isDropdownOpen.value;}function closeDropdown() {isDropdownOpen.value = false;}</script><script>import clickAwayDirective from './clickAwayDirective'; // 根据实际路径调整export default {directives: {clickAway: clickAwayDirective}};</script><style>.dropdown {position: absolute;background: white;border: 1px solid #ccc;padding: 10px;}</style>

自定义插件

我们想要在追加全局功能的时候都有什么呢

//全局组件:app.component('ComponentName', Component)` 进行注册。
//全局指令: app.directive('directiveName', directiveDefinition).
//全局属性性:app.config.globalProperties.$globalMethod = () => { console.log('This is a global method'); };
//全局插件
//app.use(myPlugin);

自定义插件在 Vue 中是一个用于封装和扩展功能的工具。想象一下你有一个工具箱(插件),里面装了很多你常用的工具(功能)。每次你需要这些工具时,只需拿出工具箱即可,不用每次都重新制造它们。

创建自定义插件的步骤很简单:

  1. 定义插件:创建一个 JavaScript 对象,这个对象有一个 install 方法。
  2. install 方法中添加功能:这个方法会在插件被使用时自动调用。在这里,你可以给 Vue 实例添加全局功能,比如方法、组件或指令。
  3. 使用插件:在 Vue 应用中,通过 app.use(plugin) 将插件注册到 Vue 实例上。
// myPlugin
export default {install(app) {// 使用 app.provide 提供全局数据app.provide('themeColor', 'blue');}};
//App.vue
import { createApp } from 'vue';import App from './App.vue';import myPlugin from './myPlugin';const app = createApp(App);app.use(myPlugin);app.mount('#app');;
//任一组件
<script setup>import { inject } from 'vue';const themeColor = inject('themeColor');</script>
;

如果对你有所帮助的话 就点个关注吧

这篇关于一些日常使用杂碎的vue3知识点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138473

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou