Vue3_2024_2天【Vue3组合式setup用法及响应式ref和reactive】

news2024/10/2 3:18:33

第一:浅谈 | 不可不知

1.vue3目录介绍(区别Vue2没有的)
在这里插入图片描述
在这里插入图片描述
vue3,默认使用ts语言,但是ts一开始无法识别某些文件,这里是系统默认配置;

2.vue2中的入口文件是main.js,而vue3这里的入口文件是与src同级目录的index.html文件!
在这里插入图片描述

  1. vue2中创建组件后,需要最外层包裹一个容器(div)可以称作“根”,在vue3中无需容器包裹(没有根包裹),可直接写元素。

4.(正如之前说过的,vue3兼容vue2代码,但尽量别混合写),

5 vue3的组合式api,也就是setup函数,特点如下:*可将属性定义、方法、计算属性、监听器都写在这一个函数内,将需要在template中要使用的,进行return出去,如:return {a,b,getInfon,deletePeo}【这一种了解许可(避免他人写你能看懂),是setup最原始写法,不推荐使用,后续使用基于–语法糖setup写法】
*setup函数内没有this,打印出来是undefined,当我们在vue2中写vue3的setup函数,此时若从setup函数内将一个定义的变量值,赋值给vue2的return的data里另一个变量,此时写法?思考。。。
结果 return(){
data{
name:this.peopleName,
}
};
没错,这里有疑问了,明明setup内部没有this,这里如何使用,其实也很好理解,
因为setup内部定义的变量最后返回出去了,template中能用,当然this也能拿出来,其次最重要的是vue2中最先发生的生命周期是beforeCreate,而vue3中的setup函数要优先它(先比它执行),然后一切就能说得通了!如图:
在这里插入图片描述

第二:详细实践说明

1 看图(细看)在这里插入图片描述在这里插入图片描述

2.完整代码:

<template>
  <div  class="contect-class">
    <div>
        <div>姓名:{{gname}}</div>
        <div>学生年龄:{{gage}}</div>
    </div>
    <buttom @click="addAge">学生年龄(+1){{readBook}}</buttom>
  </div>
  <div style="margin-top:20%;" class="contect-class">
    <div>
        <div >家长信息</div>
        <div>姓名:{{family.name}}</div>
        <div>与学生关系:{{family.connect}}</div>
        <div>联系电话:{{family.phone}}</div>
    </div>
    <buttom @click="changeParent">切换家长</buttom>
  </div>
</template>

<script>
import {ref} from 'vue';
import{reactive} from 'vue';
export default {
    /**
     * Vue2:data中定义属性自带响应式效果(背后的数据处理和数据劫持)
       Vue3:
       1.【ref:基本数据类型、引用数据类型(对象)】:ref包裹的,template中直接使用,若js层面使用必须.value谨记!
       2. 【reaction:引用数据类型】:修改对象时,单个直接点属性赋值即可,若整个对象修改,需使用assign避免响应式失效!
     */
    name:'Greg_02',
    title:'Vue3组合式API,setup函数内变量响应式',
    setup(){
        let gname='zzw';
        let gage=ref(19);
        let family=reactive({name:'钟家明',connect:'父子',phone:'18834567654'});

        console.log("【ref包裹基本数据类型】",gage,"【包裹对象类型】",family);
        function addAge(){
            gage.value+=1
            console.log("年龄+1",gage.value)
        }
        function changeParent(){
            //当family赋值,由reactive包裹时:
            //第一种修改对象内单个属性 // family.name='钟晓' 
            //第二种:修改整个对象,不能直接将新对象赋值给它(那样就完全覆盖是新的新对象,不会有响应式)
            let linObj={name:'钟晓',connect:'姐姐',phone:'18984567679'};
             // family=linObj;//失去响应式效果!!!
            family=Object.assign(family,linObj);//解决方法:使用assign将对象复制给faily,不会丢失响应式

            //当family赋值,由ref包裹时:
            //直接通过普通给就对象赋值方式,不影响原有响应式效果(你猜为什么?因为ref包裹的,在js层面需要.value,人家帮你做了响应式)
            //family.value={name:'钟晓',connect:'姐姐',phone:'18984567679'}
        }


        //1. 返回对象:template中直接使用、2.返回函数:则返回内容直接渲染到template上;
        return {gname,gage,addAge,family,changeParent}
    },
    

}
</script>

<style>
 .contect-class{
    background-color: #eeeeee;
    display:flex;justify-content: space-between;padding: 2%;
 }
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年2月最新微信域名检测拦截接口源码

这段PHP代码用于检测指定域名列表中的域名是否被封。代码首先定义了一个包含待检测域名的数组 $domainList&#xff0c;然后遍历该数组&#xff0c;对每个域名发送HTTP请求并检查响应内容以判断域名是否被封。 具体步骤如下&#xff1a; 1. 定义待检测的域名列表。 2. 遍历域名…

探索Manticore Search:开源全文搜索引擎的强大功能

在当今信息爆炸的时代&#xff0c;数据的快速检索变得至关重要。无论是在电子商务网站、新闻门户还是企业内部文档&#xff0c;高效的搜索引擎都是确保用户满意度和工作效率的关键因素之一。而在搜索引擎领域&#xff0c;Manticore Search 作为一款开源的全文搜索引擎&#xff…

制作镜像与配置推送阿里云仓库

一、制作jdk镜像 1.1、Alpine linux简介 Alpine Linux是一个轻量级的Linux发行版&#xff0c;专注于安全、简洁和高效。它采用了musl libc和BusyBox&#xff0c;使得系统资源占用较少&#xff0c;启动速度较快。 Alpine Linux也提供了一个简单的包管理工具APK&#xff0c;(注…

C2_W2_Assignment_吴恩达_中英_Pytorch

Neural Networks for Handwritten Digit Recognition, Multiclass In this exercise, you will use a neural network to recognize the hand-written digits 0-9. 在本次练习中&#xff0c;您将使用神经网络来识别0-9的手写数字。 Outline 1 - Packages 2 - ReLU Activatio…

php连接hdfs初步探索

一、phdfs拓展 结果&#xff1a;暂时舍弃 安装此拓展时&#xff0c;无法make成功&#xff0c;因为缺少hdfs.n文件。 换了其他版本的拓展包&#xff0c;并编译都没有找到此文件。 后搜到官网的相关资料&#xff0c;此hdfs.h的文件路径的地址是$HADOOP_HDFS_HOME/include/hdfs…

win11 更多网络适配器选项

win11更多网络适配器选项查找路径&#xff1a;控制面板→网络和共享中心→更改适配器设置

SQL 术语:Join 中的 Build 和 Probe 是什么意思?

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

大数据和机器学习在气象预报中的应用-张平文院士

报告链接&#xff1a;张平文院士 -- 大数据和机器学习在气象预报中的应用_哔哩哔哩_bilibili

Github项目推荐-LightMirrors

项目地址 https://github.com/NoCLin/LightMirrors 项目简述 “LightMirrors是一个开源的缓存镜像站服务&#xff0c;用于加速软件包下载和镜像拉取。目前支持DockerHub、PyPI、PyTorch、NPM等镜像缓存服务。 当前项目仍处于早期阶段。”–来自项目说明。 也就是说&#xff…

Jenkins的安装和helloworld Pipeline

文章目录 环境安装下载安装启动初始化 PipelineUISCM&#xff08;Source Control Management&#xff09;准备pipeline 参考 环境 RHEL 9.3Jenkins 2.44.0.1 安装 参考 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 。 下载安装 [ding192 ~]$ sudo …

内存占用构造方法

#使用虚拟内存构造内存消耗 mkdir /tmp/memory mount -t tmpfs -o size5G tmpfs /tmp/memory dd if/dev/zero of/tmp/memory/block #释放消耗的虚拟内存 rm -rf /tmp/memory/block umount /tmp/memory rmdir /tmp/memory #内存占用可直接在/dev/shm目录下写文件

【Deep Dive:AI Webinar】我们是否能将开源许可用于机器学习和人工智能模型?

【深入探讨人工智能】网络研讨系列总共有 17 个视频。我们按照视频内容&#xff0c;大致上分成了 3 个大类&#xff1a; 1. 人工智能的开放、风险与挑战&#xff08;4 篇&#xff09; 2. 人工智能的治理&#xff08;总共 12 篇&#xff09;&#xff0c;其中分成了几个子类&…

Revit-二开之创建线性尺寸标注-(5)

创建线性尺寸标注 对应的Revit界面的按钮 线性尺寸标注源码 本篇文章实现的逻辑是从rvt文章中拾取一面墙,然后对墙添加再水平方向上的线性尺寸标注 protected override Result OnExecute(ExternalCommandData commandData, ref string message, ElementSet elements

使用 llama.cpp 在本地部署 AI 大模型的一次尝试

对于刚刚落下帷幕的2023年,人们曾经给予其高度评价——AIGC元年。随着 ChatGPT 的火爆出圈,大语言模型、AI 生成内容、多模态、提示词、量化…等等名词开始相继频频出现在人们的视野当中,而在这场足以引发第四次工业革命的技术浪潮里,人们对于人工智能的态度,正从一开始的…

快速入门规则引擎

文章首发于微信公众号&#xff1a;职谷智享 一、什么是规则引擎 当我们在对复杂的业务进行开发时&#xff0c;程序本身逻辑代码和业务代码互相嵌套、错综复杂&#xff0c;同时维护成本高&#xff0c;可拓展性差。 可降低复杂业务逻辑组件复杂性、降低应用程序的维护和可扩展…

alibabacloud学习笔记07(小滴课堂)

讲解Sentinel自定义异常降级-新旧版本差异 讲解新版Sentinel自定义异常数据开发实战 如果我们都使用原生的报错&#xff0c;我们就无法得到具体的报错信息。 所以我们要自定义异常返回的数据提示&#xff1a; 实现BlockExceptionHandler并且重写handle方法&#xff1a; 使用F…

【C++】十大排序算法之 冒泡排序 选择排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

linux系统Jenkins工具流水线项目发布

流水线发布 pipline语法介绍阶段指令 创建流水线项目流水线脚本基础框架 pipline语法介绍 声明式的pipeline语法格式 1. 所有的声明都必须包含在pipeline{}中 2. 块只能有节段&#xff0c;指令&#xff0c;步骤或者赋值语句组成 3. 阶段&#xff1a;agent&#xff0c;stages&a…

tomcat部署和优化(二)----- 轻松搭建博客、状态页优化、虚拟主机配置

一、tomcat 1、自建博客 [rootzzzcentos1 ~]#systemctl stop firewalld [rootzzzcentos1 ~]#setenforce 0 [rootzzzcentos1 ~]#cd /data/ [rootzzzcentos1 data]#rz -E rz waiting to receive. [rootzzzcentos1 data]#ls apache-tomcat-9.0.16 apache-tomcat-9.0…

180基于matlab的频率切片小波变换程序(FTWT)

基于matlab的频率切片小波变换程序&#xff08;FTWT&#xff09;。从一种新的角度出发&#xff0c;通过自由选择频率切片函数、引进新尺度参数&#xff0c;在频率域实现小波变换&#xff0c;该变换能够很好地刻画信号各成分之间的相对能量关系。此外&#xff0c;频率切片小波变…