1、响应式数据的声明 中 ref 与 reactive 有什么区别?
答:参考答案 。个人理解:ref最好用来定义基本数据类型,使用时要用.value ;reactive最好用来定义引用数据类型。reactive在定义数据的时候,要用对象包装一下,使用时用.属性名。可以用isRef / isReactive来判断数据是通过什么定义的。
2、关于vue3中的watch,一开以为用了proxy之后,不管数据类型是什么,都可以直接监听。不需要向vue2中设置深度监听。没想到vue3中监听嵌套的对象或数组时仍要设置深度监听。
答:参考文档。与vue2中相比他可以同时监听多个数据源,任意一个改变都触发watch,但只会触发一次。但是通过更改设置 flush: 'sync'
,我们可以为每个更改都强制触发侦听器,尽管这通常是不推荐的。或者,可以用 nextTick 等待侦听器在下一步改变之前运行
注意点:检查深度嵌套对象或数组中的 property 变化时,侦听一个响应式对象或数组将始终返回该对象的当前值和上一个状态值的引用。导致watch中新旧值相同,为了完全侦听深度嵌套的对象和数组,可能需要对值进行深拷贝。这可以通过诸如 lodash.cloneDeep 这样的实用工具来实现。 这个问题在Vue2.x 也有。我是通过JSON.parse JSON.stringy进行深拷贝的,在vue2中,只要监听的是引用数据类型,watch中新旧值就一样
3、vue3中插槽的使用方法变化了
4、router-link 中的 tag 属性被删了
5、
长风破浪会有时,直挂云帆济沧海