$nextTick的使用场景介绍

$nextTick使用

Vue更新DOM-异步的

目标: 点击count++, 马上通过"原生DOM"拿标签内容, 无法拿到新值

components/Move.vue - 继续新增第三套代码

<template>
  <div>
      <p>1. 获取原生DOM元素</p>
      <h1 id="h" ref="myH">我是一个孤独可怜又能吃的h1</h1>
      <p>2. 获取组件对象 - 可调用组件内一切</p>
      <Demo ref="de"></Demo>
      <p>3. vue更新DOM是异步的</p>
      <p ref="myP">{{ count }}</p>
      <button @click="btn">点击count+1, 马上提取p标签内容</button>
  </div>
</template>

<script>
// 目标: 获取组件对象
// 1. 创建组件/引入组件/注册组件/使用组件
// 2. 组件起别名ref
// 3. 恰当时机, 获取组件对象
import Demo from './Child/Demo'
export default {
    mounted(){
        console.log(document.getElementById("h")); // h1
        console.log(this.$refs.myH); // h1

        let demoObj = this.$refs.de;
        demoObj.fn()
    },
    components: {
        Demo
    },
    data(){
        return {
            count: 0
        }
    },
    methods: {
        btn(){
            this.count++; // vue监测数据更新, 开启一个DOM更新队列(异步任务)
            console.log(this.$refs.myP.innerHTML); // 0

            // 原因: Vue更新DOM异步
            // 解决: this.$nextTick()
            // 过程: DOM更新完会挨个触发$nextTick里的函数体
             this.$nextTick(() => {
                console.log(this.$refs.myP.innerHTML); // 1
            })
        }
    }
}
</script>

总结: 因为DOM更新是异步的

3.3 $nextTick使用场景

目标: 点击搜索按钮, 弹出聚焦的输入框, 按钮消失

![ n e x t T i c k 使用 ] ( i m a g e s / nextTick使用](images/ nextTick使用](images/nextTick使用.gif)

components/Tick.vue

<template>
  <div>
      <input ref="myInp" type="text" placeholder="这是一个输入框" v-if="isShow">
      <button v-else @click="btn">点击我进行搜索</button>
  </div>
</template>

<script>
// 目标: 点按钮(消失) - 输入框出现并聚焦
// 1. 获取到输入框
// 2. 输入框调用事件方法focus()达到聚焦行为
export default {
    data(){
        return {
            isShow: false
        }
    },
    methods: {
        async btn(){
            this.isShow = true;
            // this.$refs.myInp.focus()
            // 原因: data变化更新DOM是异步的
            // 输入框还没有挂载到真实DOM上
            // 解决:
            // this.$nextTick(() => {
            //     this.$refs.myInp.focus()
            // })
            // 扩展: await取代回调函数
            // $nextTick()原地返回Promise对象
            await this.$nextTick()
            this.$refs.myInp.focus()
        }
    }
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/686704.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GAT1399协议分析(8)--批量图像查询

一、请求消息定义 视频图像包含视频片段、 图像、 文件、 人员、 人脸、 机动车、 非机动车、 物品、 场景和视频案事件、 视频图像标签等对象 在消息体中,可以包含其中一种类,加上Data字段即可。 ImageInfo对象 二、请求消息实例 wireshark 抓包实例 请求: 文本化: /V…

Linux网络编程:数据链路层协议

目录 前言&#xff1a; 1.以太网 1.1.以太网帧格式 1.2.MTU&#xff08;最大传输单元&#xff09; 1.2.1.IP协议和MTU 1.2.2.UDP协议和MTU 1.2.3.TCP协议和MTU 2.ARP协议&#xff08;地址解析协议&#xff09; 2.1.ARP在局域网通信的角色 2.2.ARP报文格式 2.3.ARP报文…

sqli-labs 靶场 less-5、6 第五关和第六关:判断注入点、使用错误函数注入爆库名、updatexml()函数

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它&#xff0c;我们可以学习如何识别和利用不同类型的SQL注入漏洞&#xff0c;并了解如何修复和防范这些漏洞。Less 5 SQLI DUMB SERIES-5 判断注入点&#xff1a;1. 首先&#xff0c;尝试正常的回显内容&#x…

【精通NIO】NIO介绍

一、什么是NIO NIO&#xff0c;全称为New Input/Output&#xff0c;是Java平台中用于替代传统I/O&#xff08;Blocking I/O&#xff09;模型的一个功能强大的I/O API。NIO在Java 1.4版本中被引入&#xff0c;其设计目标是提供一种非阻塞的、低延迟的I/O操作方式&#xff0c;以…

BERT应用——文本间关联性分析

本文结合了自然语言处理&#xff08;NLP&#xff09;和深度学习技术&#xff0c;旨在分析一段指定的任务文本中的动词&#xff0c;并进一步探讨这个动词与一系列属性之间的关联性。具体技术路径包括文本的词性标注、语义编码和模型推断。 一、技术思路 NLP和词性标注 在自然…

C语言 | Leetcode C语言题解之第136题只出现一次的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> singleNumbers(vector<int>& nums) {int eor 0;for (int num:nums)eor ^ num;int rightOne eor & (~eor 1); // 提取出最右的1int onlyOne 0;for (int cur : nums) {if ((cur…

Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

国外高防云服务器全面解析

国外高防云服务器是部署在海外市场&#xff0c;具备高级防护能力的云服务器。它们通常能够抵御大规模的分布式拒绝服务(DDoS)攻击和CC攻击&#xff0c;这类服务器特别适合对网络稳定性和数据安全性有较高要求的业务场景&#xff0c;如游戏行业、外贸电商等。下面将具体分析国外…

idea maven 执行 控制台乱码

这是没加出现的问题 上方案

verilog 232串口通信程序

1,串口通信协议: 通常串口的一次发送或接收由四个部分组成:起始位S、数据位D0~D7(一般为 6 位~8 位之间可变,数据低位在前)、校验位(奇校验、偶检验或不需要校验位)、停止位(通常为1位、1.5位、2位)。停止位必须为逻辑 1。在一次串口通信过程中,数据接收与发送双方…

容器(Docker)安装

centos安装Docker sudo yum remove docker* sudo yum install -y yum-utils#配置docker的yum地址 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装指定版本 - 可以根据实际安装版本 sudo yum install -y docke…

c# 下 ScintillaNET 显示XML信息并折叠节点

winform下显示XML信息&#xff08;非WPF&#xff09; 之前使用的是FastColoredTextBox&#xff0c;github地址如下&#xff1a; https://github.com/PavelTorgashov/FastColoredTextBox 但是有个问题&#xff0c;它支持中文&#xff0c;wordwraptrue&#xff0c;自动换行时&…

Vue3+vite部署nginx的二级目录

修改router访问路径 const router createRouter({history: createWebHistory(/mall4pc-bbc/),routes: [XXX,] })配置package.json文件 "build:testTwo": "vite build --mode testing --base/mall4pc-bbc/", 执行打包命令 npm run build:testTwo 打包出…

.NET集成DeveloperSharp操作Redis缓存

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

汇编:数组数据传送

要在32位汇编中实现数组数据的传送&#xff0c;可以使用字符串操作指令 MOVS 以及其前缀 REP&#xff0c;可以高效地复制数组数据。 MOVS 指令是一种字符串操作指令&#xff0c;用于将数据从源地址移动到目标地址。MOVS 指令有不同的变种&#xff0c;可以处理不同大小的数据&a…

每日一题——几行Python实现PAT甲级1065 A+B and C (64bit)(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 总结 改进建议 我要更强 代…

适用于 Windows 11 的 10 款最佳视频转换器:快速转换高质量视频格式

您是否遇到过由于格式不兼容而无法在设备上播放视频或电影的情况&#xff1f;您想随意播放从相机 GoPro 导入的视频&#xff0c;还是以最合适的格式将它们上传到媒体网站&#xff1f;您的房间里有一堆 DVD 光盘&#xff0c;并想将它们转换为数字格式以方便播放?...所有这些问题…

ComfyUI工作流分享-黏土特效工作流

大家给的教程都是苹果端使用Remini的软件制作&#xff0c;免费白嫖7天&#xff0c;7天后就要收费&#xff0c;作为ComfyUI技术党&#xff0c;当然是选择自己实现了&#xff0c;搭建一套工作流就搞定&#xff0c;这不&#xff0c;今天就来分享一套对应的黏土效果工作流&#xff…

前端进阶之HTML表单

前端之HTML表单 1.HTML表单的定义及概述 HTML 表单用于搜集不同类型的用户输入。 用<form> 元素定义HTML表单 例如&#xff1a; <form>. form elements. </form>1.1 HTML 表单包含表单元素&#xff1a;表单元素指的是不同类型的 input 元素、复选框、单…

成功解决:AssertionError: Torch not compiled with CUDA enabled

在运行pycharm项目的时候,出现了以上的报错,主要可以归结于以下两个个方面: 1、没有安装GPU版本的pytorch,只是使用清华的镜像地址下载了CPU版本的pytorch 2、安装的CUDA和安装的pytorch的版本不相互对应 我使用 pip list 来查看我在该环境下安装了哪些依赖项,发现自…