toRef 与 toRefs
如上,我们定义了一个响应式对象obj,并将obj.name给到变量name,在使用时可以直接访问到obj.name,但这样name无法做到响应式,即使用v-model指令绑定name时,无法实现双向数据绑定,使用toRef或toRefs可以实现响应。
toRe接收两个参数,第一个参数为目标对象,第二个参数为值为字符串类型的key,toRefs则直接接收一个目标对象作为参数。
shallowReactive
使用shallowReactive创建的响应式对象不执行嵌套对象的深层响应式转换,如下,obj.name和obj.age都是响应式的,而obj.stu.no不是响应式的,当改变obj.stu.no的value时,页面中使用obj.stu.no的部分并不会重新渲染。
在 setup 中使用生命周期函数
在setup中可以通过在生命周期钩子前面加上 “on” 来访问组件的生命周期钩子。
因为setup是围绕beforeCreate和created生命周期钩子运行的,所以不需要显式地定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在setup函数中编写。
执行顺序setup>onBeforeCreate>created>onBeforeMount>onMounted。
在Vue3中,beforeUnmount替代了beforeDestroy,unmounted替代了destroyed。
setup 语法糖
在setup中定义的变量与函数都需要return才能在页面中使用,当代码体量越来越大时,有时难免忘记在return中注册。Vue3提供了setup语法糖,在script开始标签中添加setup属性,之后定义的变量与函数,无需return就可以在页面中使用。