小白入门:vue3.5和typescript结合的教程

85 阅读3分钟

1.响应式Ref和Reactive

ref在模板中的使用

image.png

ref结合ts

image.png

reactive结合interface

image.png

ref和reactive的区别

image.png

怎样选择?

可以原始类型使用ref object使用reactive

也可以都用ref,看自己习惯

2.计算属性computed

1.跟vue2的计算属性一样是为了让使模板更简洁易读

2.有缓存,避免不必要的重复计算,提升性能

3.computed也有自动解包,因此在模板中不用.value

computed(()=>{
return    xxxx
})

image.png 使用

image.png 可以用泛型传入类型

image.png

3.监听器watch

监听ref

回调函数有两个值,第一个值是newValue,第二个值是oldValue

image.png

监听reactive的属性值

image.png

image.png

这里报错是因为不能监听响应式对象的属性值,要监听响应式对象才行,不是响应式对象中的一个属性值

image.png

但是可以用一个getter function包一下

image.png

也可以直接传响应式变量

  • 对于 reactive 对象,watch 默认会进行深度监听(即使不写 deep: true),嵌套属性变化也会触发。

监听数组

image.png

image.png

立即执行监听器

image.png 默认先执行一次

改变回调触发时机

image.png

image.png 默认是pre(之前),可以改成 post(之后 )

4.生命周期

生命周期钩子触发时机境典型用场景
onBeforeMount组件挂载到 DOM 前调用初始化数据、设置事件监听(非 DOM 相关)
onMounted组件挂载到 DOM 后调用操作 DOM(如获取元素尺寸、初始化第三方库)
onBeforeUpdate响应式数据更新,DOM 重新渲染前调用获取更新前的 DOM 状态
onUpdated响应式数据更新,DOM 重新渲染后调用处理更新后的 DOM(如滚动位置调整)
onBeforeUnmount组件卸载前调用清除定时器、事件监听、取消网络请求
onUnmounted组件卸载后调用释放资源、清理副作用
onErrorCaptured子组件抛出错误时调用捕获并处理子组件错误
onActivated缓存组件(<KeepAlive>)激活时调用恢复组件状态、重新请求数据
onDeactivated缓存组件(<KeepAlive>)失活时调用暂停定时器、保存组件状态

5. 模板中ref获取dom

image.png

  • 必须在组件挂载后(如 onMounted 钩子中)才能访问 ref.value,否则为 null(DOM 尚未渲染)。
  • 模板中的 ref 属性名需与脚本中声明的 ref 变量名一致(Vue 会自动关联)。

如果给子组件添加 ref,则获取到的是子组件的实例(可调用子组件的方法或访问其属性)。

image.png 异步更新:如果在修改数据后立即访问 ref 对应的 DOM,可能获取到旧状态,需用 nextTick 等待 DOM 更新:

6.setup

自动return 顶层组件的变量,这样就不用import

但是对于父子组件的props和emit要另外讨论:

props和emit

在vue3.3 编译器宏

在vue3.3中,是使用这样的语法defineProps和defineEmits image.png

vue3.5 响应式props解构

image.png

7.依赖注入

避免重复父子组件传递,相当于祖先组件能直接传给后代

原始父子传属性的如图

image.png

依赖注入如图

image.png

provide() 接受两个参数:第一个参数是要注入的 key,可以是一个字符串或者一个 symbol,第二个参数是要注入的值。

image.png

就是一个key,一个值

使用的写法跟localStorage差不多