js中的双问号和“?.“的含意和应用

?? 示意:只有左侧的值为null或undefined的时候才应用右侧的值
?. 示意:可选链操作符( ?. )容许读取位于连贯对象链深处的属性的值,而不用明确验证链中的每 个援用是否无效。操作符的性能相似于 . 链式操作符,不同之处在于,在援用为空(null 或者 undefined) 的状况下不会引起谬误,该表达式短路返回值

?.的集体了解是判断对象的某个属性是否存在,如果存在那么就返回整个属性的值,否则返回undefined

ref

承受一个外部值并返回一个响应式且可变的 ref 对象,有一个 .value 属性,能够通过其读取/批改对象的值。

reactive

创立一个响应式对象,与ref不同的是,reactive 承受的参数是一个对象,能够应用toRef(infoObj)为对象中的每一个属性创立一个ref, 它能够放弃对原属性的响应式链接。

ref 和 reactive:

雷同:创立一个响应式对象。

不同:

reactive 承受入参必须是对象模式,而 ref 能够是对象模式,也能够是一个单值。
读取/赋值不一样,ref 必须从.value 属性中读取值
ref存在异步问题、

toRef 和 toRefs :

toRefs 只会为源对象中蕴含的 property 生成 ref, 将对象转换为一般对象,且不失落对源对象的响应式链接,即批改源对象属性值,生成的新的一般对象的对应属性值(ref)也会批改,反之亦然。
toRef 和 toRefs 都是复制,它复制的其实就是援用 + 响应式 ref
toRef和 加toRefs的区别

toRef: 复制 reactive 里的单个属性并转成 ref
toRefs: 复制 reactive 里的所有属性并转成 ref

toRefs 只会为源对象中蕴含的 property 生成 ref。如果要为特定的 property 创立 ref,则该当应用 toRef

toRef 为特定的 property 创立 ref, 同样也会放弃响应式链接

unref

如果参数是一个ref,则返回外部值,否则返回参数自身。这是 val = isRef(val) ? val.value : val 的语法糖函数。

isRef

查看值是否为一个 ref 对象。