Vue3学习-day3

news/2025/1/13 4:44:39/

computed计算属性函数

计算属性小案例 

App.vue 

<script setup>
import { ref, computed } from 'vue'// 声明数据
const list = ref([1,2,3,4,5,6,7,8])// 基于list派生一个计算属性,从list中过滤出 > 2
const setList = computed(() => {return list.value.filter(item => item > 2)
})// 定义一个修改数组的方法
const addFn = () => {list.value.push(666)
}
</script><template><div><div>原始数据:{{ list }}</div><div>计算后的数据:{{ setList }}</div><button @click="addFn" type="button">修改</button>
</div>
</template>

 computed修改值

 

 总结

watch函数 

 

基础使用:侦听单个数据 

App.vue 

<script setup>import { ref, watch } from 'vue'const count = ref(1)const nickname = ref('李四')const changecount = () => {count.value ++}const changenickname = () => {nickname.value = '王五'}// 监视单个数据watch(count,(newvalue, oldvalue) => {console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)})// // 监视多个数据// watch([count, nickname],([oldcount, newcount],[oldnickname, newnickname]) => {//   console.log(`count发生了变化,旧值为:${oldcount},新值为:${newcount} ;nickname发生了变化,旧值为:${oldnickname},新值为:${newnickname}`)// })
</script><template><div><button @click="changecount">修改数字{{ count }}</button></div><div><button @click="changenickname">修改昵称 {{ nickname }}</button></div>
</template>

 

基础使用:侦听多个数据 

App.vue 

<script setup>import { ref, watch } from 'vue'const count = ref(1)const nickname = ref('李四')const changecount = () => {count.value ++}const changenickname = () => {nickname.value = '王五'}// 监视单个数据
//  watch(count,(newvalue, oldvalue) => {
//     console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)
//   })// 监视多个数据watch([count, nickname],([oldcount, newcount],[oldnickname, newnickname]) => {console.log(`count发生了变化,旧值为:${oldcount},新值为:${newcount} ;nickname发生了变化,旧值为:${oldnickname},新值为:${newnickname}`)})
</script><template><div><button @click="changecount">修改数字{{ count }}</button></div><div><button @click="changenickname">修改昵称 {{ nickname }}</button></div>
</template>

 

immediate 

App.vue 

<script setup>import { ref, watch } from 'vue'const count = ref(1)const nickname = ref('李四')const changecount = () => {count.value ++}const changenickname = () => {nickname.value = '王五'}// 1. 监视单个数据的变化// watch(ref对象, (newValue,oldValue) => { ... })
//  watch(count,(newvalue, oldvalue) => {
//     console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)
//   })// 2. 监视多个数据的变化
//    watch([ref对象1, ref对象2], (newArr,oldArr) => { ... })// watch([count, nickname],(oldArr, newArr) => {//   console.log(newArr,oldArr)// })
// 3. immediate 立刻执行watch(count,(newvalue, oldvalue) => {console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)}, {immediate: true})// 4. deep 深度监视,默认 watch 进行的是 浅层监视
//    const ref1 = ref(简单类型) 可以直接监视
//    const ref2 = ref(复杂类型) 监视不到复杂类型内部数据的变化
// const userInfo = ref({
//   name: 'ls',
//   age: 20
// })
// const setUserInfo = () => {
//   // // 修改了对象里的值,watch无法对其内部值进行监视
//   // userInfo.value.age = 19
//   // // 修改了 userInfo.value 修改了对象的地址,才能进行监视
//   // userInfo.value = {name:'sn', age:38}
//   userInfo.value.age++
// }// watch(userInfo,(newValue) => {
//   console.log(newValue)
// }, {
//   deep: true // 深度监视,复杂类型内部值也可监视
// })</script><template><div><button @click="changecount">修改数字{{ count }}</button></div><div><button @click="changenickname">修改昵称 {{ nickname }}</button></div><!-- <div><button @click="setUserInfo">{{ userInfo.age }}</button></div> -->
</template>

 

deep 

 App.vue

<script setup>import { ref, watch } from 'vue'const count = ref(1)const nickname = ref('李四')const changecount = () => {count.value ++}const changenickname = () => {nickname.value = '王五'}// 1. 监视单个数据的变化// watch(ref对象, (newValue,oldValue) => { ... })
//  watch(count,(newvalue, oldvalue) => {
//     console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)
//   })// 2. 监视多个数据的变化
//    watch([ref对象1, ref对象2], (newArr,oldArr) => { ... })// watch([count, nickname],(oldArr, newArr) => {//   console.log(newArr,oldArr)// })
// 3. immediate 立刻执行// watch(count,(newvalue, oldvalue) => {//     console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)//   }, {//     immediate: true//   })// 4. deep 深度监视,默认 watch 进行的是 浅层监视
//    const ref1 = ref(简单类型) 可以直接监视
//    const ref2 = ref(复杂类型) 监视不到复杂类型内部数据的变化
const userInfo = ref({name: 'ls',age: 20
})
const setUserInfo = () => {// // 修改了对象里的值,watch无法对其内部值进行监视// userInfo.value.age = 19// // 修改了 userInfo.value 修改了对象的地址,才能进行监视// userInfo.value = {name:'sn', age:38}userInfo.value.age++
}watch(userInfo,(newValue) => {console.log( newValue)
}, {deep: true // 深度监视,复杂类型内部值也可监视
})</script><template><div><button @click="changecount">修改数字{{ count }}</button></div><div><button @click="changenickname">修改昵称 {{ nickname }}</button></div><div><button @click="setUserInfo">{{ userInfo.age }}</button></div>
</template>

精确侦听对象的某个属性

App.vue 

<script setup>import { ref, watch } from 'vue'const count = ref(1)const nickname = ref('李四')const changecount = () => {count.value ++}const changenickname = () => {nickname.value = '王五'}// 1. 监视单个数据的变化// watch(ref对象, (newValue,oldValue) => { ... })
//  watch(count,(newvalue, oldvalue) => {
//     console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)
//   })// 2. 监视多个数据的变化
//    watch([ref对象1, ref对象2], (newArr,oldArr) => { ... })// watch([count, nickname],(oldArr, newArr) => {//   console.log(newArr,oldArr)// })
// 3. immediate 立刻执行// watch(count,(newvalue, oldvalue) => {//     console.log(`count发送了变化,旧值为:${oldvalue},新值为:${newvalue}`)//   }, {//     immediate: true//   })// 4. deep 深度监视,默认 watch 进行的是 浅层监视
//    const ref1 = ref(简单类型) 可以直接监视
//    const ref2 = ref(复杂类型) 监视不到复杂类型内部数据的变化const userInfo = ref({name: 'ls',age: 20
})
const setUserInfo = () => {// // 修改了对象里的值,watch无法对其内部值进行监视// userInfo.value.age = 19// // 修改了 userInfo.value 修改了对象的地址,才能进行监视// userInfo.value = {name:'sn', age:38}userInfo.value.age++}// watch(userInfo,(newValue) => {
//   console.log( newValue)
// }, {
//   deep: true // 深度监视,复杂类型内部值也可监视
// })// 5. 对于对象中的某个属性,进行监视
watch(() => userInfo.value.age,(newValue,oldValue) => {console.log(newValue, oldValue)
})</script><template><div><button @click="changecount">修改数字{{ count }}</button></div><div><button @click="changenickname">修改昵称 {{ nickname }}</button></div><div><button @click="setUserInfo">{{ userInfo.age }}</button></div>
</template>

 

总结 

生命周期函数

vue3的生命周期API(选项式vs组合式) 

 生命周期函数基本使用

执行多次 

总结 


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

相关文章

Mysql 性能优化:覆盖索引

概述 覆盖索引&#xff08;Covering Index&#xff09;是一个 MySQL 查询优化技术&#xff0c;它指的是一个索引包含了查询所需的所有字段的数据&#xff0c;因此不需要回表&#xff08;访问数据表的行&#xff09;就可以完成查询。使用覆盖索引可以显著提高查询性能&#xff…

C++中 为什么要把基类指针指向子类对象?

为什么要把基类指针指向子类对象&#xff1f; 1&#xff09;实现多态性 动态绑定行为&#xff1a;通过基类指针指向子类对象&#xff0c;可以利用 C 的多态机制。当基类中有虚函数&#xff0c;并且子类重写了这些虚函数时&#xff0c;通过基类指针调用虚函数&#xff0c;实际调…

【算法】算法大纲

这篇文章介绍计算机算法的各个思维模式。 包括 计数原理、数组、树型结构、链表递归栈、查找排序、管窥算法、图论、贪心法和动态规划、以及概率论:概率分治和机器学习。没有办法逐个说明,算法本身错综复杂,不同的算法对应着不同的实用场景,也需要根据具体情况设计与调整。…

Lua语言的软件开发工具

Lua语言的软件开发工具 引言 Lua是一种轻量级且高效的脚本语言&#xff0c;广泛应用于游戏开发、嵌入式系统以及Web开发等领域。由于其简洁的语法、强大的扩展性和良好的性能&#xff0c;Lua逐渐成为开发者们青睐的语言之一。在Lua语言的生态系统中&#xff0c;各类软件开发工…

docker 安装 fastdfs

1、安装docker(已安装的跳过这一步) 2、安装FastDFS ## 这里我使用的腾讯云个人镜像 docker pull ccr.ccs.tencentyun.com/satan/fastdfs:6.06## 创建挂载映射文件夹 mkdir /data/fdfs/tracker /data/fdfs/storage## 安装tracker docker run -dti --networkhost --name track…

SkyWise Digital:助力国际品牌成功进军中国市场

伦敦,2025年1月8日 —— SkyWise Digital 天智数字营销正式成立,专注于为国际品牌提供定制化的市场进入策略和数字营销服务,帮助他们成功打入中国市场。作为一家集文化洞察、数据驱动与创新技术于一体的专业机构,SkyWise Digital 致力于帮助西方品牌解锁中国市场的巨大潜力。 …

Node.js入门html,css,js 30年了nodejs环境 09年出现 15年

Node.js入门 html,css,js 30年了 nodejs环境 09年出现 15年 nodejs为我们解决了2个方面的问题&#xff1a; 【锦上添花】让我们前端工程师拥有了后端开发能力&#xff08;开接口&#xff0c;访问数据库&#xff09; - 大公司BFF&#xff08;50&#xff09;【✔️】前端工程…

NLP中的问答(Question answering)

在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;问答&#xff08;Question Answering, QA&#xff09;任务并不严格等同于分类任务&#xff0c;但某些形式的QA任务可以被建模为分类问题。具体情况如下&#xff1a; 1. 问答任务的分类情况 多选问答 如果问题有多个备…