1 computed函数
1.1例子:vue2的写法
<template ><div class="container"><div>标题</div><div>{{ msg }}</div><button @click="ClickBtn">点击显示父组件信息</button><br />第一个数:<input type="text" v-model="data.firstNum" /><br />第二个数:<input type="text" v-model="data.scordNum" /><div>加起来:{{addNum}}</div></div></template><script >import { reactive } from "@vue/reactivity";name: "tabbar";export default {props: {msg: String,},emits: ["handleBtn"], //组件放出去的事件也需要给在组件内部声明一下computed: { //计算属性addNum(){return Number(this.data.firstNum)+Number(this.data.scordNum)// 确保相加的是两个数字 而不是单纯的数值相加}},setup(props, context) {const data = reactive({firstNum: 10,scordNum: 2,});console.log(props); //传进来的值在此处可以被打印console.log(context);//点击组件内按钮 提交信息给父组件function ClickBtn() {//事件名 参数console.log("点击自组件");context.emit("handleBtn", "蚌埠住了");}return {ClickBtn,data,};},};</script><style lang="less" scoped>.container {margin: 10px;background: cornsilk;width: 100%;display: flex;justify-content: center;align-items: center;flex-direction: column;}</style>
1.2 vue3中的计算属性的写法
先引入computed的属性
然后在setup中使用
return的值就是fullName的值
都在setup中不需要用this(也用不了)
之后记得在setup的函数return中return出来才可以在模板中使用
或者
以上情况只考虑了不修改计算属性的值的情况 只考虑了读的情况

在set中通过”-“进行拆分成数组(仅针对于以上案例中的拆分)
2 watch监听属性(功能与vue2 中的一致)
2.1 vue2 的写法
1 简易写法

2 handler写法
2.2 vue3中的写法
直接在setup中写watch,在setup中监听已经变成了内置的函数,
不用const 因为watch是一种行为,不是数据
情况一 :监视ref所定义的 一个 数据

情况二 :监视ref所定义的 多个 数据
vue3中可以调用多次watch函数
监视多个数据
监视多个数据的简便写法
把数据放进数组里
那么监听返回的数据也是数组
添加配置项
1 一般监听是数据发生变化之后再执行,那么我想要上来直接执行一遍watch怎么操作(之前是配置immediate为true)

实际上watch可以传递三个参数
第一个是监听的对象 第二个是执行操作的回调函数 第三个是个对象用来放置配置项
情况三 监听reactive定义的一个整个响应式数据(有坑!!!)
(有坑注意:此处无法正确的获得oldValue)
在vue3 中的reactive中 不论层级有多深 不用deep也可以监听到数据的变化

没办法关闭deep配置
情况四 监听reactive定义的一个整个响应式数据中的某一个属性值
把监视的参数改成函数的返回值(让箭头函数指向这个值,或者直接return这个值)
这里的oldValue是可以正常工作的
情况五 监听reactive中定义的响应式数据中的某些属性值
返回值放进数组中
特殊情况
课程链接:https://www.bilibili.com/video/BV1Zy4y1K7SH?p=152&spm_id_from=pageDriver
(对象类型的比较容易出问题)
总结:

