首页 > 其他分享 >Vue3:响应式 API-工具函数 isRef()、unref()、toRef()、toRefs()、readonly()

Vue3:响应式 API-工具函数 isRef()、unref()、toRef()、toRefs()、readonly()

时间:2022-09-22 16:34:58浏览次数:89  
标签:obj reactive toRefs isRef toRef unref readonly let ref

 isRef()

检查某个值是否为 ref。

<script setup>
import {ref,isRef} from "vue"
let msg=ref(0)
function fn(){
    console.log(isRef(msg)) //判断是否为响应性变量  
}
< /script>

 

unref()

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

 

toRef()

基于响应式对象上的一个属性,创建一个对应的 ref。这样创建的 ref 与其源属性保持同步:改变源属性的值将更新 ref 的值,反之亦然。

const state = reactive({
  foo: 1,
  bar: 2
})

const fooRef = toRef(state, 'foo')

// 更改该 ref 会更新源属性
fooRef.value++
console.log(state.foo) // 2

// 更改源属性也会更新该 ref
state.foo++
console.log(fooRef.value) // 3

 

toRefs()

将一个响应式对象转换为一个普通对象,这个普通对象的每个属性都是指向源对象相应属性的 ref。每个单独的 ref 都是使用 toRef() 创建的。

 

import {ref,isRef,reactive,toRef,toRefs} from "vue"
let obj=reactive({x:20,y:20})

let x=toRef(obj,"x")// 隐式 let x=ref(obj.x);并且响应到obj对象去
 let obj2 = reactive({ x: 2, y: 2 });   let x = toRef(obj, obj2);  console.log(x);

 

readonly()

接受一个对象 (不论是响应式还是普通的) 或是一个 ref,返回一个原值的只读代理。

只读代理是深层的:对任何嵌套属性的访问都将是只读的。它的 ref 解包行为与 reactive() 相同,但解包得到的值是只读的。

import {isRef,reactive,toRef,toRefs,readonly} from "vue"
let obj=readonly({}) 

 

标签:obj,reactive,toRefs,isRef,toRef,unref,readonly,let,ref
From: https://www.cnblogs.com/LIXI-/p/16715217.html

相关文章

  • rabbitMQ中将ReadOnlyMemory转换为byte []
    rabbitmq-C#将ReadOnlyMemory转换为byte[]发布于2020-07-3111:16:05给定ReadOnlyMemory结构,我想将流转换为字符串我有以下代码:varbody=ea.Body;//ea.Bod......
  • [Typescript] 18. Medium - Deep Readonly
    Implementageneric DeepReadonly<T> whichmakeeveryparameterofanobject-anditssub-objectsrecursively-readonly.Youcanassumethatweareonlydea......
  • [Typescript] 17. Medium - Readonly 2
    Implementageneric MyReadonly2<T,K> whichtakestwotypeargument T and K.K specifythesetofpropertiesof T thatshouldsettoReadonly.When K......
  • vue3——readonly 与 shallowReadonly
    readonly:让一个响应式数据变为只读的(深只读)。shallowReadonly:让一个响应式数据变为只读的(浅只读,只读第一层)。isReadonly:判断一个数据是不是只读数据应用场景:......
  • Typescript类型体操 - Deep Readonly
    题目中文实现一个通用的DeepReadonly<T>,它将对象的每个参数及其子对象递归地设为只读。您可以假设在此挑战中我们仅处理对象。数组,函数,类等都无需考虑。但是,您仍然可以......
  • Typescript类型体操 - Readonly 2
    题目中文实现一个通用MyReadonly2<T,K>,它带有两种类型的参数T和K。K指定应设置为Readonly的T的属性集。如果未提供K,则应使所有属性都变为只读,就像普通的Readonly<T>一......
  • [Typescript] 2. Easy -- readonly
    Forexample:interfaceTodo{title:stringdescription:string}consttodo:MyReadonly<Todo>={title:"Hey",description:"foobar"}todo.title=......
  • READONLY You can‘t write against a read only replica.
    出现以上错误,表示当前redis服务是只读的,没有写权限,估计该服务是被当作从数据库使用了。   解决方案:   打开redis服务对应的配置文件,把其中的属性slave-read-only的......
  • 正确实例(采用readonly)
    父组件:<template><div>父组件:{{data.name}}-{{data.age}}-{{data.hight}}<hr><Hello:data="data":readonlyData="readonlyData"@......
  • vue3将对象转为响应式/ref/reactive/toRefs
    一、ref的作用就是将一个原始数据类型(primitivedatatype)转换成一个带有响应式特性的数据类型,原始数据类型共有7个,分别是:String/Number/BigInt/Boolean/Symbol/Null/Unde......