vue3 ref 、unref 、toRef、toRefs

本文介绍了Vue3中的ref、unref、reactive、toRef和toRefs的概念和用法。ref用于创建响应式且可变的引用,unref则用于获取ref的内部值或返回原参数。toRef和toRefs用于从响应式对象中创建新的ref,前者针对单个属性,后者转换整个对象。isRef用于检测值是否为ref对象。
摘要由CSDN通过智能技术生成

ref接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象仅有一个 .value属性,指向该内部值。

示例

const count = ref(0)
console.log(count.value) // 0
 如果将对象分配为 ref 值,则它将被 reactive 函数处理为深层的响应式对象

unref

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

import { unref } from "vue";
let msgref = ref('你好')
console.log(unref(msgref)) // 你好
let  msg = '你好'
console.log(unref(msg)) // 你好
toRef
可以用来为源响应式对象上的某个 property 新创建一个 reactive。然后,ref 可以被传递,它会保持对其源 property 的响应式连接。

 const state = reactive({
            foo: 1,
            bar: 2
        })
        const fooRef = toRef(state, 'foo')
        console.log(fooRef.value)
        fooRef.value++
        console.log(fooRef.value) //2
        console.log(state.foo)    //2
        state.foo++
        console.log(fooRef.value) // 3
        console.log(state.foo ) //3
toRefs

将响应式对象转换为普通对象,其中结果对象的每个 property 都是指向原始对象相应 property 的 ref

        import { reactive, toRefs } from "vue";         
        const state = reactive({
            foo: 1,
            bar: 2
        })
        const stateAsRefs = toRefs(state)
        // ref 和原始 property 已经“链接”起来了
        state.foo++
        console.log(stateAsRefs.foo.value) // 2
        console.log(state.foo) //2
        stateAsRefs.foo.value++
        console.log(state.foo) // 3
        console.log(stateAsRefs.foo.value) //3
toRef 和 toRefs 都是复制,它复制的其实就是引用 + 响应式 ref
toRef和 加toRefs的区别

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

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

isRef
检查值是否为一个 ref 对象。

        import { reactive, ref,isRef } from "vue";        
        let info = reactive({ user: 'John Doe' })
        const state = ref({
            foo: 1,
            bar: 2
        })
        console.log(isRef(state)) // true
        console.log(isRef(info)) // false
————————————————
版权声明:本文为CSDN博主「叮当猫咪呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fggfgf/article/details/124947881

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值