第十五章 isRef和unRef的原理及实现

77 阅读1分钟

isRef和unRef的原理及实现

这一节的两个功能点的实现非常的简单

isRef的功能:判断一个变量是否是一个ref类型

unRef的功能:直接取到变量的.value值

isRef测试用例:

    it('isRef',()=>{
        const user = reactive({
            name:'ljp'
        })
        const age = ref(18)
        expect(isRef(age)).toBe(true)
        expect(isRef(1)).toBe(false)
        expect(isRef(user)).toBe(false)
    })

实现:给RefImpl类创建一个标识,由标识判断是否是ref的类型

image.png

unRef测试用例:

it('unRef',()=>{
        const age = ref(18)
        expect(unRef(age)).toBe(18)
        expect(unRef(1)).toBe(1)
    })

实现:直接利用刚刚实现的isRef判断是否为ref类型,ref的话返回ref.value否则放回ref

image.png

超级简单