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)

 

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