Vue3 (computed函数,watch函数,watchEffect函数)

2023-10-30

1.computed函数

与vue2中computed配置功能一致

变化:需要引入(组合式的API)

<template>
  姓 :<input type="text" v-model="person.firstName" />
  <br />
  名 :<input type="text" v-model="person.secondName" />
  <br />
  <span>全名:{{ person.fullName }}</span>
</template>

<script>
import { reactive, computed } from "@vue/reactivity";
export default {
  setup() {
    let person = reactive({
      firstName: "张",
      secondName: "三",
    });
//简写(不考虑被修改的情况)
    person.fullName = computed(() => {
      return person.firstName + person.secondName;
    });
//计算属性(考虑读和写)
    person.fullName = computed({
       get(){
          return person.firstName + '-' + person.lastName
      },
       set(value){
          const nameArr = value,split('-')
          person.firstName  =  nameArr[0]
          person.lastName  = nameArr[1]

      }
   )}
    return {
      person,
    };
  },
};
</script>

2.watch函数

变化:需要引入(组合式的API)

情况一:监视ref所定义的一个响应式数据

 watch(sum,(newValue,oldValue)=>{
      console.log(newValue,oldValue);
      //立即监听
    },{immediate:true})

情况二:监视ref所定义的一多响应式数据

 watch([sum,msg],(newValue,oldValue)=>{
      console.log('sum或msg变了',newValue,oldValue);

    })

 情况三:监视reactive所定义的一个响应式数据

  • 此处无法正确的获取oldValue
  • 强制开启了深度监视(deep配置无效)
 watch(person,(newValue,oldValue)=>{
      console.log('person变化了',newValue,oldValue);

    })

情况四:监视reactive所定义的个响应式数据中的某个属性

 watch(()=> person.name),(newValue,oldValue)=>{
      console.log('name变化了',newValue,oldValue);

    })

情况五:监视reactive所定义的个响应式数据中的某些属性

watch([()=>person.name,()=>person.age],(newValue,oldValue)=>{
      console.log('name和age变化了',newValue,oldValue);

    })

特殊情况:

watch(()=>person.job,(newValue,oldValue)=>{
    console.log('person的job变化了',newValue,oldValue)
 },{deep:true})

  此处由于监视的是reactive定义的对象中的某个属性,所以deep配置有效

3.watchEffect函数

变化:需要引入(组合式的API

watch的套路是:既要指明监视的属性,也要指明监视的回调

watchEffect的套路是:不用指明监视哪个属性,监视的回调中用到哪个属性,就监视哪个属性

watchEffect有点像computed:

  • 但computed注重的计算出来的值(回调函数的返回值),所以必须要写返回值。
  • 而watchEffect更注重的是过程(回调函数的函数体),所以不用写返回值。
watchEffect(()=>{
   const x1 = sum.value
   const x2 = person.age
   console.log('watchEffect配置的回调执行了')
})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue3 (computed函数,watch函数,watchEffect函数) 的相关文章

随机推荐

  • Html中截取url参数 实现HTML间的url传值

    大家好 今天遇到一个问题 页面全是html url传值 竟然获取不到参数值 A html 登录按钮 jQuery function login click function ajax url http 10 9 80 211 8090 ia
  • vue的多层主键的通信

    div div
  • 标准化与标准计分

    其实就是衡量 含金量 的一种方法 标准计分其实就是 距离 标准差 貌似和离差很像 离差就是 距离 标准差 10 50 对于分数来说 如果与平均分的距离越大 含金量就越高呢 在组数据中 可以求分均值 中位数以及标准差了 以考试成绩为例 现在
  • 模糊算法51单片机学习应用(一)模糊化

    模糊算法51单片机学习应用 一 模糊化 最近在尝试学习模糊算法 网上查了很多材料 大多都是写原理 粗略一看好像感觉我懂了 但是真的要做的话 却完全不知道从哪里开始入手 其实 对我们首次学习使用的人来说 我们不要那些高大上的原理 我们先理解他
  • react中样式的使用(内联和外部样式表)

    1 在src中新建三个子组件分别为 Header Footer Content 2 在里面分别写入代码 建议用rcc快捷方式 Header js中代码如下 import React Component from react var Head
  • Java中哈希集(HashSet)概念,实现以及操作

    Java中HashSet的用法 1 HashSet概念 2 Java文档中HashSet的实现 3 HashSet的构造函数 3 1 HashSet 3 2 HashSet int initialCapacity 3 3 HashSet i
  • Ubuntu 安装 pytorch

    使用 pytorch 进行深度学习训练 这也是我不得不选择 linux 的原因 系统 ubuntu 22 04 型号 Lenovo Yoga 14sIHU 2021 集显 Irix Xe lspci grep i vga 独显 GeForc
  • diff linux文件夹patch,Linux中的版本控制---diff和patch命令

    一 构造两个用于测试的文件 hello txt world txt 二 用diff命令比较两个文本文件的差异 对这个两个文本文件执行diff 命令 并通过输出重定向 将差异保存在diff txt文件中 diff u hello txt wo
  • 使用 Docker Compose 部署 Elasticsearch + Kibana

    本篇文章主要介绍了使用 Docker Compse 部署 Elasticsearch Kibana 并整合到 Spring Boot 项目中的详细步骤 Elasticsearch Kibana 版本 7 17 0 7 的最新版本 Sprin
  • Android 语音播放Media Player

    原文地址 https developer android com guide topics media mediaplayer html viacontentresolver 语音播放 因为实习工作相关的缘故 最近在学习android语音播
  • 多个RecycleView 嵌套显示不全的情况

    场景 项目中最外层使用ScrollView 里面嵌套了recycleview recycleview中又嵌套了多个recycleview 导致部分recycleview显示不出来 app界面的结构图
  • 空间域图像增强:图像锐化/增强

    空间域图像增强 OpenCV图像锐化 增强 0 综述 1 Laplacian高通滤波算子 2 Laplacian锐化代码实践 3 USM锐化增强算法 4 USM代码实践 0 综述 图像的卷积计算除了可以完成我们前面介绍的模糊去噪 边缘检测等
  • anaconda3.6.5安装pyhive

    1 首先安装anaconda3 6 5 略 2 配置好bin下环境变量 3 来到anaconda官网 搜索需要的包 pyhive 不是anaconda前缀的也行 例如biaze pyhive https anaconda org anaco
  • Qt学习笔记

    1 Qt 音同 cute 是一个跨平台的 C 开发库 主要用来开发图形用户界面 Graphical User Interface GUI 程序 当然也可以开发不带界面的命令行 Command User Interface CUI 程序 2
  • Ubuntu 16.04出现:Problem executing scripts APT::Update

    Ubuntu 16 04出现 Problem executing scripts APT Update Post Invoke Success if usr bin test w var cache app info a e usr bin
  • unity按钮实现人物变大效果

    unity按钮实现人物变大效果 游戏里面模型变大效果的实现 如下动态图所示 点我下载 https download csdn net download weixin 43474701 71975042
  • java 通过pdf模板,生成PDF,并下载到本地

    注意 本例子是从向模板定义的变量赋值 而不是从无到有的来生成pdf 直接就能用 maven依赖
  • 精通MySQL之架构篇

    今天给大家分享的是大数据开发基础部分MySQL的第一篇 老刘讲点和别人不一样的内容 众多伙伴都知道MySQL的基础知识以及使用 但是对里面的原理知道的不多 咱们学知识只看表面绝对是不行的 所以老刘争取把MySQL的架构知识给大家讲明白 My
  • Shell编程之echo命令

    Shell 的 echo 指令与 PHP 的 echo 指令类似 都是用于字符串的输出 命令格式 echo string 您可以使用echo实现更复杂的输出格式控制 1 显示普通字符串 echo It is a test 这里的双引号完全可
  • Vue3 (computed函数,watch函数,watchEffect函数)

    1 computed函数 与vue2中computed配置功能一致 变化 需要引入 组合式的API