实现 isRef 和 unRef 功能

  1. 功能
  • isRef 判断一个值是不是 Ref 数据
  • unRef 如果是 Ref 数据,就返回该数据 .value 如果不是 Ref 数据,直接返回值
  1. 测试代码
// isRefunRef.spec.ts
it('isRef',()=>{
  const a = ref(1)
  const user = reactive({
    age: 1
  })
  expect(isRef(a)).toBe(true)
  expect(isRef(1)).toBe(false)
  expect(isRef(user)).toBe(false)
})
it('unRef',()=>{
  const a = ref(1)
  expect(unRef(a)).toBe(1)
  expect(unRef(1)).toBe(1)
})
  1. 功能实现
// effect.ts
class RefImpl {
  __v_isRef = true
}

export function isRef(val) {
  return !!val.__v_isRef
}

export function unRef(val) {
  return isRef(val) ? val.value : val
}
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐