【Vue3】setup参数细讲!computed计算属性和watch监听属性

setup参数细讲!computed计算属性和watch监听属性

      • setup细讲!
        • setup参数,steup(props,context)
          • 参数1.props,负责接收父组件传过来的值
          • 参数2.context
            • context.attrs
            • context.emit
            • context.slots, 插槽
        • Vue2的 props
      • computed计算属性
        • Vue3写法
          • 简便写法,修改计算属性的值会报错
          • 完整写法,可以修改计算属性
      • watch监听属性
        • Vue3写法
          • 监视ref所定义的一个响应式数据,不用加.value,一但加上,监听的就是reactive
          • 监视ref所定义的多个响应式数据
          • 监视reactive所定义的一个响应式数据的全部属性,发现此处无法正确监听oldvalue
          • 监视reactive所定义的一个响应式数据中的某个属性(错误写法和正确写法)
          • 监视reactive所定义的一个响应式数据中的多个基本类似属性
          • 监视reactive所定义的一个响应式数据中的对象中的某个属性时候,就得加上deep,此时deep有效
        • WatchEffec函数

setup细讲!

  • step执行的时机,在beforeCreate之前执行一次,this是没有的,是undetined
    在这里插入图片描述在这里插入图片描述

setup参数,steup(props,context)

参数1.props,负责接收父组件传过来的值
  • 如果不拿props声明,则打印的props为空
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
参数2.context
  • 先看一下打印的context
  • 在这里插入图片描述在这里插入图片描述
context.attrs
  • 1,当不拿props声明父组件传过来的参数,则打印的props为空,但是context.attrs中就会有这个参数
    在这里插入图片描述
context.emit
  • 当父组件上点击子组件,想触发子传父,需要用到context.emit(‘父组件的事件名’,传的参数)
  • 父组件上
    在这里插入图片描述
  • 子组件上
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
context.slots, 插槽
  • 子组件打印一下,红色圈住的代表有值,
setup(props, context) {console.log(context.slots); //相当于Vue2中的$attrsreturn {};},

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 子组件上使用
 <slot name='chacao'></slot>

Vue2的 props

  • 当父组件传值
<childer :msg='msg' :name='name'></childer>
  • 当子组件接收,接收的值在VC上,$attrs上就没有了
props:['msg','name']
  • 当子组件不接收,接收的值在$attrs上

computed计算属性

  • Vue3中也能直接用,但不介意直接用
  • 直接用写法:
    在这里插入图片描述

Vue3写法

  • 先引入
简便写法,修改计算属性的值会报错
import { reactive,computed} from 'vue';

在这里插入图片描述

完整写法,可以修改计算属性
<template><!-- VUE3组件中的模板结构可以没有根标签 --><view><input type="text" v-model="parems.name" /></view><br /><br /><view><input type="text" v-model="parems.lastname" /></view><div class="fullname">全名: {{ parems.fullname }}</div><div class="fullname">全名修改:<input type="text" v-model="parems.fullname" name="" id=""></div></template><script>
import { reactive, computed } from "vue";
export default {name: "Demo",setup(props, context) {let parems = reactive({name: "乞力马扎",lastname: "罗",});// 计算属性-简写,没有考虑计算属性被修改的情况// parems.fullname = computed(() => {//   return parems.name +'-'+ parems.lastname;// });//计算属性,考虑读写情况parems.fullname = computed({get(){return parems.name +'-'+ parems.lastname;},set(value){const newname=value.split('-')parems.name=newname[0]parems.lastname=newname[1]}});return {parems,};},
};
</script><style>
</style>

watch监听属性

  • Vue2写法
  • 简便写法
   //简单写法sum(newvalue, oldvalue) {console.log(newvalue, oldvalue);},
  • 复杂写法
 sum:{immediate:true,//上来立即监听一次deep:true,//深度监听handler(newvalue, oldvalue){console.log(newvalue, oldvalue);},}

Vue3写法

  • 监视reactive所定义的多个响应式数据,发现此处无法正确监听oldvalue
  • Vue3的监听reactive的响应式数据会强制开启深度监听(deep配置无效)
  • 监视reactive所定义的一个响应式数据中的对象中的某个属性时候,就得加上deep,此时deep有效
监视ref所定义的一个响应式数据,不用加.value,一但加上,监听的就是reactive
<script>
import { reactive, watch, ref } from "vue";
export default {name: "Demo",setup(props, context) {let sum =ref(0)let parems = reactive({name: "乞力马扎",lastname: "罗",sum: 0,job:{a:1,b:2}});watch(sum,(newvalue,oldvalue)=>{console.log(newvalue,oldvalue)})return {sum,parems,};},
};
</script>
监视ref所定义的多个响应式数据
<script>
import { reactive, watch, ref } from "vue";
export default {name: "Demo",setup(props, context) {let sum =ref(0)let sum2 =ref(0)let parems = reactive({name: "乞力马扎",lastname: "罗",sum: 0,});watch([sum,sum2],(newvalue,oldvalue)=>{//参数1数组监视的谁,参数2,监视的方法回调,参数3监视的对象配置console.log(newvalue,oldvalue)},{immediate:true})return {sum,sum2,parems,};},
};
</script>

在这里插入图片描述

监视reactive所定义的一个响应式数据的全部属性,发现此处无法正确监听oldvalue
<script>
import { reactive, watch, ref } from "vue";
export default {name: "Demo",setup(props, context) {let sum =ref(0)let sum2 =ref(0)let parems = reactive({name: "乞力马扎",lastname: "罗",sum: 0,});//监视reactive所定义的多个响应式数据,发现此处无法正确监听oldvaluewatch(parems,(newvalue,oldvalue)=>{console.log(newvalue,oldvalue)})return {sum,sum2,parems,};},
};
</script>

在这里插入图片描述
在这里插入图片描述

监视reactive所定义的一个响应式数据中的某个属性(错误写法和正确写法)

在这里插入图片描述
在这里插入图片描述

监视reactive所定义的一个响应式数据中的多个基本类似属性

在这里插入图片描述

监视reactive所定义的一个响应式数据中的对象中的某个属性时候,就得加上deep,此时deep有效

在这里插入图片描述
在这里插入图片描述

WatchEffec函数

  • Watch:既要指明监听的属性,也要指明监视的回调
  • WatchEffec:不用指明监视的哪个属性,监视的回调中用到哪个属性,那就监视哪个属性,类似ref定义的,就是.value使用
  • 类似computed计算属性:,但是computed必须得有返回值return,WatchEffec则不需要返回值
<template><!-- VUE3组件中的模板结构可以没有根标签 --><view><input type="text" v-model="parems.name" /></view><br /><br /><view><input type="text" v-model="parems.lastname" /></view><view>{{ sum }}</view><button @click="sum++">sum++</button>
</template><script>
import { reactive, watch, ref, watchEffect } from "vue";
export default {name: "Demo",setup(props, context) {let sum = ref(0);let parems = reactive({name: "乞力马扎",lastname: "罗",sum: 0,job: {a: 1,b: 2,},});//监听watch(parems,(newvalue, oldvalue) => {console.log(newvalue, oldvalue);},{ deep: true });//监视watchEffect(() => {console.log("执行");const name = sum.value});return {sum,parems,};},
};
</script><style>
</style>

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

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

相关文章

.Net Core Restful Api 版本区分第一种

前言&#xff1a;在我们进行Web Api开发时&#xff0c;版本的区分&#xff0c;是必须要考虑的&#xff0c;涉及到我们的版本发布&#xff0c;切换等&#xff0c;如何从旧版本无缝的切换到新版本&#xff1f; 下面&#xff0c;我们通过使用[ApiVersion]特性&#xff0c;实现两个…

Spring MVC 系列1 -- 初识Spring MVC

目录 1. 什么是 Spring MVC&#xff1f; 2. MVC定义 3. 创建SpringMVC项目 ​4. Spring MVC要学习哪些? 1. 什么是 Spring MVC&#xff1f; 官⽅对于 Spring MVC 的描述是这样的&#xff1a; 翻译成中文 从上述定义我们可以得出两个关键信息&#xff1a; 1. Spring MVC 是…

conda疑难杂症

annaconda、miniconda和conda的关系 conda官网 https://docs.conda.io/projects/conda/en/latest/ 下载安装Anaconda: https://www.anaconda.com/products/distribution#Downloads 下载安装Miniconda&#xff1a;https://docs.conda.io/en/latest/miniconda.html 安装 安装…

7月6日华为云盘古气象大模型登上《Nature》杂志:相比传统数值预报快10000倍

7月6日&#xff0c;国际顶级学术期刊《自然》&#xff08;Nature&#xff09;杂志正刊发表了华为云盘古大模型研发团队的最新研究成果——《三维神经网络用于精准中期全球天气预报》&#xff08;《Accurate medium-range global weather forecasting with 3D neural networks》…

C/C++实现高并发http服务器

http高并发服务器实现 基础知识 html&#xff0c;全称为html markup language&#xff0c;超文本标记语言。 http&#xff0c;全称hyper text transfer protocol&#xff0c;超文本传输协议。用于从万维网&#xff08;WWW&#xff1a;World Wide Web&#xff09;服务器传输超…

win10远程桌面控制Ubuntu服务器 - 内网穿透实现公网远程

文章目录 前言视频教程1. ubuntu安装XRDP2.局域网测试连接3. Ubuntu安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 转载自cpolar极点云文章&#xff1a;树莓派使用Nginx 搭建轻量级网站远程访问 前言 XRDP是一种开源工具&#xff0c;它允许用户通过Windows R…

【已解决】Flask项目报错TypeError: tuple indices must be integers or slices, not str

文章目录 问题情境报错及分析报错代码分析 解决方案必要的解决方法可能有用的解决方法 问题情境 本解决方案适用情境&#xff1a;在本地可以正常运行的flask项目&#xff0c;放到云服务器报错TypeError: tuple indices must be integers or slices, not str&#xff0c;即代码…

Tomcat之配置文件详解

Tomcat 目录 安装好 Tomcat 后&#xff0c;打开它的文件夹&#xff0c;可以看到以下目录 bin:存放各种启动、关闭和其它程序的脚本 conf:配置文件及相关数据文件存放的目录 lib:Tomcat 使用的库文件存放的目录&#xff0c;如存放 Servlet 规范的 API logs:默认日志文件存放…

《生活教育》期刊简介及投稿邮箱

《生活教育》期刊简介及投稿邮箱 《生活教育》杂志创办于1934&#xff0c;是中华人民共和国教育部主管的国家重点学术期刊&#xff0c;国家级期刊&#xff0c;中国知网全文收录G4期刊&#xff0c;它的理论是陶行知教育思想的主线和重要基石&#xff0c;陶行知的教育理论&#…

基于单片机的老人防摔倒的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过LCD1602液晶显示屏显示当前的经纬度及时间的信息&#xff1b;温度传感器采集当前体温&#xff1b;通过GPS接收模块获得当前位置的位置的经度、纬度、时间和高度等信息&#xff1b;通过ADXL345检测老人摔倒的一瞬间重力加速度通…

面试题更新之-vue2x监听方面有什么缺点?所以才有了vue3.0

文章目录 vue2x监听vue3.0监听vue2x监听方面有什么缺点&#xff1f;所以才有了vue3.0 vue2x监听 在Vue.js 2.x中&#xff0c;你可以通过监听属性来响应数据的变化。以下是几种常见的监听方式&#xff1a; 监听计算属性&#xff1a;你可以使用computed属性来创建一个计算属性&…

排序算法第二辑——选择排序

一&#xff0c;选择排序 选择排序算是简单排序中的渣渣&#xff0c;这种算法基本上是没有什么用处的。但是作为一个初学者&#xff0c;我又必须要会写这种算法。这种算法的实现实现思想和它的名字一样&#xff0c;就是在一个范围内选择最大或者最小的数据然后再交换数据实现排序…

Maynor的博客专家成长之路——暨2023年中复盘

文章目录 博客专家成长之路——暨2023年中复盘前言念念不忘的博客专家每天只做三件事敲代码写博客健健身 我的感悟 不足之处未来&#xff1a;和CSDN共同成长最后 博客专家成长之路——暨2023年中复盘 前言 ​ 2023年不知不觉已经过去了半年有余&#xff0c;也是时候作年中复盘…

10.25UEC++/小试牛刀(笨鸟先飞案例)

1.思路整理&#xff1a; 如何入手&#xff1f; 角色可能是每个游戏的最重要的部分&#xff0c;所以一般可以先从角色入手&#xff0c;如果游戏很复杂&#xff0c;可以进行拆分设计。 蓝图创建地图&#xff1a; 创建默认Pawn&#xff1a; 编写GameMode默认构造函数&#xff1a;…

Springboot整合Activiti详解

文章目录 版本依赖配置文件需要注意的问题画流程图activiti服务类进行编写流程部署流程定义启动流程流程实例 测试流程启动流程完成任务受理任务 版本依赖 开发工具 IDEASpringBoot 2.4.5&#xff08;这里我试过SpringBoot 3.1.1版本&#xff0c;Activiti没有启动&#xff0c;…

Nginx-负载均衡

文章目录 nginx 负载均衡负载均衡策略&#xff08;方法、算法&#xff09;nginx配置round-robin加权轮询least-connectedip-hasp使用Https realip后端real server不使用realip模块后端real server使用realip模块 ab压力测试不同负载四层负载 7层负载4层和7层 nginx 负载均衡 负…

银河麒麟系统无法进入桌面拷贝备份文件

最近使用VMWare搭建银河麒麟系统升级后&#xff0c;无法进入桌面&#xff0c;而是进入tty1界面 这个时候如何想导出里面的文件就可以用文件共享的方式右键到虚拟机设置-选项&#xff0c;如图所示 选择一个共享目录 如d盘vm目录 登录tty1账号密码 ls列出文件 如图进行文件拷贝…

如何优雅的将 Docker 镜像从 1.43G 瘦身到 22.4MB

Docker 镜像的大小对于系统的 CI/CD 等都有影响&#xff0c;尤其是云部署场景。我们在生产实践中都会做瘦身的操作&#xff0c;尽最大的可能使用 Size 小的镜像完成功能。下文是一个简单的 ReactJS 程序上线的瘦身体验&#xff0c;希望可以帮助大家找到镜像瘦身的方向和灵感。 …

Python 列表 extend()函数使用详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 extend函数使用详解 1、可以接收的参数1.1、添加字符串1.2、添加元组1.3、添加字…

【动手学深度学习】pytorch-参数管理

pytorch-参数管理 概述 我们的目标是找到使损失函数最小化的模型参数值。 经过训练后&#xff0c;我们将需要使用这些参数来做出未来的预测。 此外&#xff0c;有时我们希望提取参数&#xff0c;以便在其他环境中复用它们&#xff0c; 将模型保存下来&#xff0c;以便它可以在…