unref、isref、toRef、toRefs

unref() 如果参数是一个ref则返回它的value,否则返回参数本身
unref(val) 相当于val=isRef(val)?val.value:val

  function initialCount(value: number | Ref<number>) {
    // Make the output be true
    console.log(value === 10)
  }

  const initial = ref(10)

  initialCount(unref(initial))  // 必然输出true

isref() 检查一个值是否是一个ref对象
toRef、toRefs的本质是引用,修改响应式数据,会影响到原始数据,视图不会更新

toRef 一次仅能设置一个数据,接收两个参数,第一个参数是哪个对象,第二个参数是对象的哪个属性
toRefs接收一个对象作为参数,它会遍历对象身上的所有属性,然后挨个调用toRef执行

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

 

fooRef.value++
console.log(state.foo === 2)


state.foo++
console.log(fooRef.value === 3)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章