Vue3的计算属性(computed)和监听器(watch)案例语法

news/2024/11/7 20:53:04/

一:前言

        Vue3 是 Vue2 的一个升级版,随着 2023年12月31日起 Vue2 停止维护。这意味着 Vue3 将会为未来国内一段时间里,前端的开发主流。因此熟练的掌握好 Vue3 是前端开发程序员所不可避免的一门技术栈。而 Vue3 是 Vue2 的一个升级版,其语法大多相似。不过也有不同之处。比如计算属性(computed)和监听器(watch)的写法就有所不同。接下来我会通过一个案例,来描述在 Vue3 中的写法。

二:案例代码

1、html 部分

        这里是 html 的代码部分,由于只是基础案例,因此界面布局是没有那么复杂的,只是一些输入框这些显示罢了。显示效果见最上方的图片。

<template><div class="el"><h1>计算属性和监视</h1></div><fieldset><legend>姓名操作</legend>姓氏:<input placeholder="请输入姓氏" type="text" v-model="user.firstName"/><br />名字:<input placeholder="请输入名字" type="text" v-model="user.lastName"/><br /></fieldset><fieldset><legend>计算属性和监视的演示</legend>姓名:<input placeholder="显示姓名" type="text" v-model="fullName1"/><br />姓名:<input placeholder="显示姓名" type="text" v-model="fullName2"/><br />姓名:<input placeholder="显示姓名" type="text" v-model="fullName3"/><br /></fieldset>
</template>

2、JavaScript 部分

        这块是我们实现的逻辑了。这里我写的还是最初的 Vue3 版本,并不是 3.2 之后的写法,我们可以看到 computed 中的 get 和 set 写法。以及两种 watch 监听器方法。


import { computed, defineComponent, reactive, ref, watch, watchEffect } from 'vue';export default defineComponent({setup() {// 定义响应式对象const user = reactive({firstName: '东方',lastName: '不败',})// 当只有一个回调函数的时候,默认是getconst fullName1 = computed(()=>{return user.firstName + '_' + user.lastName})// computed同步修改const fullName2 = computed({get(){return user.firstName + '_' + user.lastName},set(val:string){const names = val.split('_')user.firstName = names[0]user.lastName = names[1]}})// 监听器const fullName3 = ref('')watch(user,({firstName,lastName})=>{fullName3.value = firstName + '_' + lastName},{immediate:true,deep:true})// 第二种监听器,和上面的泣别就是默认immediate和deep为truewatchEffect(()=>{fullName3.value = user.firstName + '_' + user.lastName})return {user,fullName1,fullName2,fullName3}}
})

3、css部分

<style lang="scss" scoped>
fieldset{padding: 10px;
}
</style>

三:结尾

        有 Vue2 基础的小伙伴对这块写法应该很容易理解。初学者可以自己动手写一下。最后附上项目gitee源码地址:

乾辰/vue3全家桶练习icon-default.png?t=N7T8https://gitee.com/qianchen12138/vue3-family-bucket-practice


http://www.ppmy.cn/news/1241498.html

相关文章

云原生系列Go语言篇-编写测试Part 2

基准测试 确定代码是快或慢非常复杂。我们不用自己计算&#xff0c;应使用Go测试框架内置的基准测试。下面来看​​第15章的GitHub代码库​​sample_code/bench目录下的函数&#xff1a; func FileLen(f string, bufsize int) (int, error) {file, err : os.Open(f)if err ! …

C语言——文件操作

C语言——文件操作 1.文件拷贝 #include<stdio.h>int main(int argc,char** argv) {FILE *srcNULL;FILE *newNULL;int n_read0;unsigned char buf[1024]{0};srcfopen("./file","r");if(srcNULL){printf("文件打开失败\n"); return -1;}n…

openssl+ ECC + linux 签名校验开发实例(C++)

文章目录 ECC签名过程&#xff08;ECDSA签名&#xff09;ECC验证过程&#xff08;ECDSA验证&#xff09;C示例代码 ECC&#xff08;Elliptic Curve Cryptography&#xff09;是一种基于椭圆曲线数学结构的密码学技术。在ECC中&#xff0c;签名和验证过程使用的是数字签名算法&a…

C#面试问题整理

sqlserver中视图和表的区别 在 SQL Server 中&#xff0c;视图&#xff08;View&#xff09;和表&#xff08;Table&#xff09;是不同的对象&#xff0c;它们有以下几点区别&#xff1a; 数据存储方式&#xff1a;表是一种实际存储数据的数据库对象&#xff0c;它包含列和行&…

自动化部署 扩容openGauss —— Ansible for openGauss

前言 大家好&#xff0c;今天我们为大家推荐一套基于Ansible开发的&#xff0c;自动化部署及扩容openGauss的脚本工具&#xff1a;Ansible for openGauss&#xff08;以下简称 AFO&#xff09;。 通过AFO&#xff0c;我们只需简单修改一些配置文件&#xff0c;即可快速部署多种…

Canvas艺术之旅:探索锚点抠图的无限可能

说在前面 在日常的图片处理中&#xff0c;我们经常会遇到需要抠图的情况&#xff0c;无论是为了美化照片、制作海报&#xff0c;还是进行图片合成。抠图对于我们来说也是一种很常用的功能了&#xff0c;今天就让我们一起来看下怎么使用canvas来实现一个锚点抠图功能。 效果展示…

nodejs+vue+python+PHP+微信小程序-健身俱乐部在线管理平台的设计与实现-安卓-计算机毕业设计

随着经济的发展、财富的累积&#xff0c;人们生活水平、生活质量大幅度提高&#xff0c;生活环境得到明显改善&#xff0c;但是竞争激烈、人们生活压力大、生活节奏快加上饮食习惯和生活方式不合理导致国内 亚健康人群逐年增多。统计数据表明当前我国亚健康人群比例已经超过了7…

【数据库篇】关系模式的表示——(2)规范化

范式&#xff1a;范式是符合某一种级别的关系模式的集合 规范化&#xff1a;是指一个低一级的范式的关系模式&#xff0c;通过模式的分解转换为若干个高一级范式的关系模式的集合。 1NF 每个分量必须是不可分开的数据项&#xff0c;满足这个条件的关系模式就是1NF。 2NF 若…