vue3的生命周期【computed和watch的区别】

本文探讨了Vue3的新特性,包括基于Vite的快速开发环境、新的生命周期钩子以及`computed`和`watch`的区别。Vue3利用ES6的Proxy改进数据响应,移除了模板语法中的`v-for`的key需求。在生命周期方面,`setup`函数取代了部分创建阶段,并引入了如`onBeforeMount`等新钩子。`computed`作为工具函数需从Vue解构使用,而`watchEffect`则会一次性监听多个值的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue3

npkill 快速删除项目当中的node_modules

  • 安装:npm i -g npkill
  • 使用:npkill 敲空格确定删除,退出按q

vite

vite的特点

  • 快,比webpack快10-100倍
  • 原理是,它是基于script标签的type属性值的module模块化,让浏览器去做了80%的解析。webpack的解析完全 依赖于nodejs解析,所以webpack相对vite来说,耗时间多。

创建一个vite项目

  • npm create vite@latest

命令

  • 'npm run dev' 开启开发环境
  • ·npm run build· 开启生产环境--打包

语法篇

变化

  • template 标签里的语法一点没变
  • style 也没变
  • script 语法有变化

底层改变里什么?

  1. vue3使用es6的proxy做数据的劫持,更好,更快,更强大。
  2. 虚拟dom上自动添加补丁,每一个元素都又一个默认添加的key,v-for不用再加key了。
  3. vue2的选项模式(面向对象形式),vue3是组合模式(函数式编程),所以,vue3打包之后的体积更小。按需使用。

ref和reactive

  1. ref 两种用法:1用于声明基本数据类型的值,2用于绑定dom对象。ref在js中使用,需要点value,在dom中使用则不需要。
  2. reactive 用于声明引用数据类型的值,可以使用toRefs来解构成ref值使用。
  3. 关系是:reactive底层使用的是ref的实现。
  4. 它们俩基本上替代了vue2中的data。

setup

  • setup函数,为了平滑的从vue2语法平滑过度到vue3语法,在对象配置里使用setup函数
  • setup属性,最后setup成为了script标签的属性,只要标签中声明的引入的一切资源,都可以直接使用。
  • setup特性,它本身就替代了生命周期里的创建阶段,所以没有this

生命周期

vue2的

  1. beforeCreate 创建前
  2. created 创建完成
  3. beforeMount 挂载前
  4. mounted 挂载完成
  5. beforeUpdate 更新前
  6. updated 更新完毕
  7. beforeDestroy 销毁前
  8. destroyed 销毁后

vue3的

  1. vue3的创建阶段就是setup属性替代了
  2. onBeforeMount 挂载前 记录一个用户的访问信息-时间-ip-网络-设备类型
  3. onMounted 创建完成 【*用于发起页面加载完成后的第一次自动请求数据】
  4. onBeforeUpdate 更新前 可以在这里对数据再一次修改
  5. onUpdated 更新完毕 观测更新后的数据
  6. onBeforeUnmount 卸载前 【*用于清除掉全局的定时器,变量,闭包等等】
  7. onUnmounted 卸载后 背后做日志的上传工作

computed和watch

computed 作为一个工具函数,需要从vue里解构使用

  1. 声明一个只读的计算属性
let str = computed(() => refdata.vlaue)
  1. 声明一个可以读写的计算属性
let data = computed({
  get() {
    return refname.value
  },
  set(val) {
    refname.value = val
  }
})

watch

  1. 监听一个数据
watch(data, (val,old) => {
})
  1. 监听多个数据
watch([d1,d2], ([newD1,newD2],[oldD1,oldD2]) => {
}) 
  1. 如果监听的是reactive
let data = reactive({})
watch(() => data, (val, old) => {}, { deep: true })

watchEffect

这个函数只会触发一次,可以监听多个值,只要这个值写在这里,程序就会自动的触发一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pinia-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值