Vue2学习第三天

Vue2 学习第三天

1. 计算属性 computed

  • 计算属性实现

    1. 定义:要用的属性不存在,要通过已有属性计算得来。

    2. 原理:底层借助了Objcet.defineproperty方法提供的gettersetter

    3. get函数什么时候执行?

      • 初次读取时会执行一次。
      • 当依赖的数据发生改变时会被再次调用。
    4. 优势:与 methods 实现相比,内部有缓存机制(复用),效率更高,调试方便。

<template><div><div>count:{{ count }}</div><div>num:{{ num }}</div><div>computed:{{ doubleCount }}</div><div>methods:{{ numDouble() }}</div><button @click="num++">num++</button><button @click="count++">count++</button></div>
</template><script>
export default {/*** 1.可以根据你data当中的值进行计算* 2.可以实现数据缓存* 3.计算属性必须依赖响应式数据*/name: "Computed",data() {return {count: 10,num: 12,};},computed: {// 只有依赖的数据发生变化,才执行doubleCount() {console.log("计算了");return this.count * 2;},},methods: {// num当中只要数据发生变化,methods就执行numDouble() {console.log("methods执行了");return this.num * 2;},},
};
</script><style scoped></style>

QQ录屏20240215111857 -original-original

  • 计算属性总结

    1. 可以根据你 data 当中的值进行计算
    2. 可以实现数据缓存
    3. 计算属性必须依赖响应式数据
  • 计算属性最终会出现在 vm 上,直接读取使用即可。

  • 如果计算属性要被修改,那必须写set 函数去响应修改,且set中要引起计算时依赖的数据发生改变。

2. 监视属性 watch

  • 监视属性

    1. 当被监视的属性变化时, 回调函数自动调用, 进行相关操作
    2. 监视的属性必须存在,才能进行监视!
    3. 监视的两种写法:
      • new Vue 时传入watch配置
      • 通过vm.$watch**监视
  • 天气案例

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>天气案例</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器--><div id="root"><h2>今天天气很{{info}}</h2><!-- 绑定事件的时候:@xxx="yyy" yyy可以写一些简单的语句 --><!-- <button @click="isHot = !isHot">切换天气</button> --><button @click="changeWeather">切换天气</button></div></body><script type="text/javascript">Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示。const vm = new Vue({el: "#root",data: {isHot: true,},computed: {info() {return this.isHot ? "炎热" : "凉爽";},},methods: {changeWeather() {this.isHot = !this.isHot;},},});</script>
</html>

QQ录屏20240215112541 -original-original

  • 深度监视
<template><div><input type="text" v-model="value" /><button @click="changeObj">监听obj</button></div>
</template><script>
export default {name: "Watch",data() {return {value: "",msg: {name: "123",obj: {name: "abc",},},};},// watch用于监听data中数据的变化,里面可以写任何逻辑watch: {value(newValue, oldValue) {console.log(newValue, oldValue);},msg: {handler(newValue, oldValue) {console.log(JSON.stringify(this.msg));},},// immediate立即监听immediate: true,// deep深度监听,对于嵌套层次深的对象,会一直监听到最下面deep: true,},methods: {changeObj() {this.msg = {name: "123",obj: {name: "abc",a: {b: "214",},},};},},
};
</script><style scoped></style>

QQ录屏20240215112758 -original-original

  • 监视属性简写
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>天气案例_监视属性_简写</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器--><div id="root"><h2>今天天气很{{info}}</h2><button @click="changeWeather">切换天气</button></div></body><script type="text/javascript">Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示。const vm = new Vue({el: "#root",data: {isHot: true,},computed: {info() {return this.isHot ? "炎热" : "凉爽";},},methods: {changeWeather() {this.isHot = !this.isHot;},},watch: {//正常写法/* isHot:{// immediate:true, //初始化时让handler调用一下// deep:true,//深度监视handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}}, *///简写/* isHot(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue,this)} */},});//正常写法/* vm.$watch('isHot',{immediate:true, //初始化时让handler调用一下deep:true,//深度监视handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}}) *///简写/* vm.$watch('isHot',(newValue,oldValue)=>{console.log('isHot被修改了',newValue,oldValue,this)}) */</script>
</html>
  • watch 实现姓名案例

    • computedwatch之间的区别:
      • computed 能完成的功能,watch 都可以完成。
  • watch 能完成的功能,computed 不一定能完成,例如:watch 可以进行异步操作

  • 两个重要的小原则:

    • 所被 Vue 管理的函数,最好写成普通函数,这样 this 的指向才是 vm 或 组件实例对象。

    • 所有不被 Vue 所管理的函数(定时器的回调函数、ajax 的回调函数等、Promise 的回调函数),最好写成箭头函数,这样 this 的指向才是 vm 或 组件实例对象。

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>姓名案例_watch实现</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器--><div id="root">姓:<input type="text" v-model="firstName" /> <br /><br />名:<input type="text" v-model="lastName" /> <br /><br />全名:<span>{{fullName}}</span> <br /><br /></div></body><script type="text/javascript">Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示。const vm = new Vue({el: "#root",data: {firstName: "张",lastName: "三",fullName: "张-三",},watch: {firstName(val) {setTimeout(() => {// console.log(this);this.fullName = val + "-" + this.lastName;}, 1000);},lastName(val) {this.fullName = this.firstName + "-" + val;},},});</script>
</html>

QQ录屏20240215113129 -original-original

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

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

相关文章

如何让Obsidian实现电脑端和安卓端同步

Obsidian是一款知名的笔记软件&#xff0c;支持Markdown语法&#xff0c;它允许用户在多个设备之间同步文件。要在安卓设备上实现同步&#xff0c;可以使用remote save插件&#xff0c;以下是具体操作步骤&#xff1a; 首先是安装电脑端的obsidian&#xff0c;然后依次下载obs…

Typora+PicGO+腾讯云COS做图床教程

文章目录 Typora&#xff0b;PicGO&#xff0b;腾讯云COS做图床教程一、为什么使用图床二、Typora、PicGO和腾讯云COS介绍三、下载Typora和PicGOTyporaPicGO 四、配置Typora、PicGO和腾讯云COS腾讯云COS配置PicGO配置Typora配置 Typora&#xff0b;PicGO&#xff0b;腾讯云COS做…

mysql 执行update操作 记录未修改

问题 mysql 执行update操作 记录未修改 详细问题 笔者进行SpringBootMybatis项目开发&#xff0c;确认执行update操作 控制台内容如下 Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession3cbe9459] was not registered for sync…

基于STM32的老人心率监测系统

1. 系统设计 本次课题为基于STM32的老人心率监测系统&#xff0c;在此设计了如图2.1所示的系统结构框图&#xff0c;整个系统包括了MAX30102心率血氧检测模块&#xff0c;SIM800短信模块&#xff0c;液晶显示模块&#xff0c;按键&#xff0c;ESP8266无线通信模块以及主控制器s…

【CV论文精读】【BEV感知】BEVFormer:通过时空Transformer学习多摄像机图像的鸟瞰图表示

【CV论文精读】BEVFormer Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers BEVFormer&#xff1a;通过时空Transformer学习多摄像机图像的鸟瞰图表示 图1&#xff1a;我们提出了BEVFormer&#xff0c;这是一种自动驾驶的…

js基础篇

javascript 1.1javascript是什么&#xff1f; 是运行在浏览器【客户端】的编程语言 1.2 js的组成 ECMAScript (基础语法) Web APIs (DOM BOM) 1.3 js的书写位置 内部&#xff0c;外部&#xff0c;行内 【代码写在标签内部】 // 内部 <script>alter("你好&…

软件实例分享,药店进销存软件医药系统进销存教程

软件实例分享&#xff0c;药店进销存软件医药系统进销存教程 一、前言 以下软件程序教程以 佳易王药店进销存管理系统V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 软件可以对药品的有效期进行管理&#xff0c;可以查询还有多少天到期的…

云计算基础-网络虚拟化

虚拟交换机 什么是虚拟交换机 虚拟交换机是一种运行在虚拟化环境中的网络设备&#xff0c;其运行在宿主机的内存中&#xff0c;通过软件方式在宿主机内部实现了部分物理交换机的功能&#xff0c;如 VLAN 划分、流量控制、QoS 支持和安全功能等网络管理特性 虚拟交换机在云平…

编程语言的实际应用场景(C语言场景)

从应用范围上来说&#xff0c;这些编程语言大致可以分为两种&#xff1a; 一种是专用型语言&#xff0c;也就是针对某个特定领域而设计出来的语言&#xff1b;另一种是通用型语言&#xff0c;它们可以开发多种类型的应用程序&#xff0c;而不是局限在某个特定的领域。 专用型…

中科星图——LANDSAT_8/02/T1/TOA的Landsat8_C2_TOA类数据集

简介 数据名称&#xff1a; Landsat8_C2_TOA 数据来源&#xff1a; USGS 时空范围&#xff1a; 2020年1月-2023年3月 空间范围&#xff1a; 全国 数据简介&#xff1a; Landsat8_C2_TOA数据集是将数据每个波段的辐射亮度值转换为大气层顶表观反射率TOA&#xff0c;是…

如何解决缓存和数据库的数据不一致问题

数据不一致问题是操作数据库和操作缓存值的过程中&#xff0c;其中一个操作失败的情况。实际上&#xff0c;即使这两个操作第一次执行时都没有失败&#xff0c;当有大量并发请求时&#xff0c;应用还是有可能读到不一致的数据。 如何更新缓存 更新缓存的步骤就两步&#xff0…

【STM32 CubeMX】串口编程DMA+IDLE中断

文章目录 前言一、为什么要引入IDLE中断二、IDLE中断使用方式2.1 接收的三种情况2.2 函数的使用查询方式中断方式DMA方式分析一个问题 总结 前言 在嵌入式系统中&#xff0c;串口通信是一项关键的任务&#xff0c;而使用DMA&#xff08;直接内存访问&#xff09;结合IDLE中断进…

PLC_博图系列☞FBD

PLC_博图系列☞FBD 文章目录 PLC_博图系列☞FBD背景介绍FBD优势局限性 FBD 元素 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 FBD 背景介绍 这是一篇关于PLC编程的文章&#xff0c;特别是关于西门子的博图软件。我并不是专业的PLC编程人员&#xff0c;也不懂电路…

CTFshow web(文件上传158-161)

web158 知识点&#xff1a; auto_append_file 是 PHP 配置选项之一&#xff0c;在 PHP 脚本执行结束后自动追加执行指定的文件。 当 auto_append_file 配置被设置为一个文件路径时&#xff0c;PHP 将在执行完脚本文件的所有代码后&#xff0c;自动加载并执行指定的文件。 这…

可视化锻炼日记ExerciseDiary

什么是 ExerciseDiary &#xff1f; ExerciseDiary 是带有 GitHub 风格的年度可视化的锻炼日记。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 exercisediary &#xff0c;选择第一个 aceberg/exercisediary&#xff0c;版本选择 latest。 本文写作时&#xff0c; lat…

云计算基础-大页内存

大页内存功能概述 什么是大页内存 简单来说&#xff0c;就是通过增大操作系统页的大小来减小页表&#xff0c;从而避免快表缺失 主要应用场景 主要运用于内存密集型业务的虚拟机&#xff0c;比如对于运行数据库系统的虚拟机&#xff0c;采用HugePages(大页)后&#xff0c;可…

ubuntu22.04@laptop OpenCV Get Started: 011_edge_detection

ubuntu22.04laptop OpenCV Get Started: 011_edge_detection 1. 源由2. edge_detection应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点逐步分析3.1 GaussianBlur去噪3.2 Sobel边缘检测3.2.1 SobelX方向边缘检测3.2.2 SobelY方向边缘检测3.2.3 SobelXY方向边缘检测 3.3 Canny…

PyTorch 快速安装 - 基于 JupyterHub 并运行 K8s

PyTorch 快速安装 - 基于 JupyterHub 并运行 K8s 运行 PyTorch 可以直接逻辑运行、容器中运行、KubeFlow 中运行以及基于 JupyterHub&#xff08;独立运行或运行在 K8s 之上&#xff09;等多种模式。这里介绍运行在 K8s 上基于 JupyterHub 的 PyTorch 方法&#xff0c;这也是运…

基于边缘计算的智能家居能源管理系统

一、项目背景 随着智能家居设备的普及&#xff0c;能源消耗问题日益凸显。为了更有效地管理家庭能源使用&#xff0c;减少浪费&#xff0c;并可能实现能源自给自足&#xff0c;我们提出了基于边缘计算的智能家居能源管理系统 该系统能够实时监控和分析家庭能源消耗数据&#xf…

MySQL的日志

一&#xff1a;概述 &#xff08;1&#xff09;介绍 在任何一种数据库中&#xff0c;都会有各种各样的日志&#xff0c;记录着数据库工作的方方面面&#xff0c;以帮助数据库管理员追踪数据库曾经发生过的各种事件&#xff0c;MySQL也不例外。 &#xff08;2&#xff09;分类…