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