重构响应式
Vue3.5 中对内部响应式系统进行了重构,内存占用减少了 56%
,对于开发行为来说是没有任何改变的。
Props 解构赋值
在之前的版本中,我们为组件设置默认值的过程是这样的;
ts
const props = withDefaults(
defineProps<{
count?: number
msg?: string
}>(),
{
count: 0,
msg: 'Hello Vue3.5',
}
)
在 Vue3.5 之后,Props 支持解构赋值
,大大简化了默认值声明的过程;
ts
const { count = 0, msg = 'Hello Vue3.5' } = defineProps<{
count?: number
msg?: string
}>()
同时在 Vue3.5 之后可以直接监听 Props 内部的参数
。
ts
watch(
() => count,
newValue => {
console.log('watch ==>', newValue)
}
)
onEffectCleanup 注册监听回调
在组件卸载或者下一次监听的时候会自动执行 onEffectCleanup
回调函数,而无需在 beforeUnmount
中统一清理,代码结构更加合理。
TS
watch(
() => count,
newValue => {
const timer = setTimeout(() => {
console.log('watch ==>', newValue)
}, 1000)
onWatcherCleanup(() => {
console.log('onWatcherCleanup', count)
clearTimeout(timer)
})
}
)
useTemplateRef 获取元素
在 Vue3.5 之前获取元素是通过 ref 来获取的,既可以创建响应式数据,也可以获取对应的元素,是不符合单一职责原则的。
html
<template>
<input ref="inputRef" />
</template>
<script setup>
import { ref } from 'vue'
const inputRef = ref(null)
</script>
在 Vue3.5 之后的版本中,我们通过 useTemplateRef()
来获取元素
html
<template>
<input ref="input" />
</template>
<script setup>
import { nextTick, ref, useTemplateRef } from 'vue'
const inputRef = useTemplateRef('input')
nextTick(() => {
console.log(inputRef.value)
})
</script>
Deferred Teleport 延迟传送
在 Vue3.5 之前,我们需要确保 Teleport 传送的元素一定在 Teleport 上下文之前
才可以正常工作。
html
<template>
<div id="container"></div>
<Teleport to="#container">...</Teleport>
</template>
在 Vue3.5 之后我们可以添加 defer
属性来进行延迟传送,无需确保元素上下文位置。
html
<template>
<Teleport defer to="#container">...</Teleport>
<div id="container"></div>
</template>
总结
Vue3.5 版本已经是默认的版本了,同时也对某些特性场景下进行的优化和新增的功能,总体来说会更加方便,代码结构更加简洁,大家赶快体验起来吧~
最后
感谢你的阅读~
如果你有任何的疑问欢迎您在后台私信,我们一同探讨学习!
如果觉得这篇文章对你有所帮助,点赞、在看是最大的支持!