共计 882 个字符,预计需要花费 3 分钟才能阅读完成。
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 对象。