日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)VUE3教程:Vue3.0響應(yīng)性APIRefs

本節(jié)例子中代碼使用的單文件組件語法

成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、全網(wǎng)營銷推廣小程序開發(fā)、微信公眾號(hào)開發(fā)、網(wǎng)站推廣服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計(jì)、程序開發(fā)來完成項(xiàng)目落地,為水泥攪拌車企業(yè)提供源源不斷的流量和訂單咨詢。

#ref

接受一個(gè)內(nèi)部值并返回一個(gè)響應(yīng)式且可變的 ref 對象。ref 對象具有指向內(nèi)部值的單個(gè) property .value。

示例:

const count = ref(0)
console.log(count.value) // 0


count.value++
console.log(count.value) // 1

如果將對象分配為 ref 值,則可以通過 reactive 方法使該對象具有高度的響應(yīng)式。

類型聲明:

interface Ref {
  value: T
}


function ref(value: T): Ref

有時(shí)我們可能需要為 ref 的內(nèi)部值指定復(fù)雜類型。我們可以通過在調(diào)用 ref 來覆蓋默認(rèn)推斷時(shí)傳遞一個(gè)泛型參數(shù)來簡潔地做到這一點(diǎn):

const foo = ref('foo') // foo's type: Ref


foo.value = 123 // ok!

如果泛型的類型未知,建議將 ref 轉(zhuǎn)換為 Ref

function useState(initial: State) {
  const state = ref(initial) as Ref // state.value -> State extends string
  return state
}

#unref

如果參數(shù)為 ref,則返回內(nèi)部值,否則返回參數(shù)本身。這是 val = isRef(val) ? val.value : val。

function useFoo(x: number | Ref) {
  const unwrapped = unref(x) // unwrapped 確保現(xiàn)在是數(shù)字類型
}

#toRef

可以用來為源響應(yīng)式對象上的 property 性創(chuàng)建一個(gè) ref。然后可以將 ref 傳遞出去,從而保持對其源 property 的響應(yīng)式連接。

const state = reactive({
  foo: 1,
  bar: 2
})


const fooRef = toRef(state, 'foo')


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


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

當(dāng)您要將 prop 的 ref 傳遞給復(fù)合函數(shù)時(shí),toRef 很有用:

export default {
  setup(props) {
    useSomeFeature(toRef(props, 'foo'))
  }
}

#toRefs

將響應(yīng)式對象轉(zhuǎn)換為普通對象,其中結(jié)果對象的每個(gè) property 都是指向原始對象相應(yīng) property 的ref。

const state = reactive({
  foo: 1,
  bar: 2
})


const stateAsRefs = toRefs(state)
/*
Type of stateAsRefs:


{
  foo: Ref,
  bar: Ref
}
*/


// ref 和 原始property “鏈接”
state.foo++
console.log(stateAsRefs.foo.value) // 2


stateAsRefs.foo.value++
console.log(state.foo) // 3

當(dāng)從合成函數(shù)返回響應(yīng)式對象時(shí),toRefs 非常有用,這樣消費(fèi)組件就可以在不丟失響應(yīng)性的情況下對返回的對象進(jìn)行分解/擴(kuò)散:

function useFeatureX() {
  const state = reactive({
    foo: 1,
    bar: 2
  })


  // 邏輯運(yùn)行狀態(tài)


  // 返回時(shí)轉(zhuǎn)換為ref
  return toRefs(state)
}


export default {
  setup() {
    // 可以在不失去響應(yīng)性的情況下破壞結(jié)構(gòu)
    const { foo, bar } = useFeatureX()


    return {
      foo,
      bar
    }
  }
}

#isRef

檢查值是否為ref對象。

#customRef

創(chuàng)建一個(gè)自定義的 ref,并對其依賴項(xiàng)跟蹤和更新觸發(fā)進(jìn)行顯式控制。它需要一個(gè)工廠函數(shù),該函數(shù)接收 tracktrigger 函數(shù)作為參數(shù),并應(yīng)返回一個(gè)帶有 getset 的對象。

  • 使用 v-model 使用自定義 ref 實(shí)現(xiàn) debounce 的示例:
  

  function useDebouncedRef(value, delay = 200) {
    let timeout
    return customRef((track, trigger) => {
      return {
        get() {
          track()
          return value
        },
        set(newValue) {
          clearTimeout(timeout)
          timeout = setTimeout(() => {
            value = newValue
            trigger()
          }, delay)
        }
      }
    })
  }

  
  export default {
    setup() {
      return {
        text: useDebouncedRef('hello')
      }
    }
  }

Typing:

function customRef(factory: CustomRefFactory): Ref


type CustomRefFactory = (
  track: () => void,
  trigger: () => void
) => {
  get: () => T
  set: (value: T) => void
}

#shallowRef

創(chuàng)建一個(gè) ref,它跟蹤自己的 .value 更改,但不會(huì)使其值成為響應(yīng)式的。

const foo = shallowRef({})
// 改變 ref 的值是響應(yīng)式的
foo.value = {}
// 但是這個(gè)值不會(huì)被轉(zhuǎn)換。
isReactive(foo.value) // false

參考:正在將獨(dú)立的響應(yīng)式值創(chuàng)建為 refs

#triggerRef

手動(dòng)執(zhí)行與 shallowRef](#shallowref) 關(guān)聯(lián)的任何效果。

const shallow = shallowRef({
  greet: 'Hello, world'
})


// 第一次運(yùn)行時(shí)記錄一次 "Hello, world"
watchEffect(() => {
  console.log(shallow.value.greet)
})


// 這不會(huì)觸發(fā)作用,因?yàn)?ref 很淺層
shallow.value.greet = 'Hello, universe'


// 記錄 "Hello, universe"
triggerRef(shallow)

參考計(jì)算和偵聽 - watchEffect


新聞名稱:創(chuàng)新互聯(lián)VUE3教程:Vue3.0響應(yīng)性APIRefs
瀏覽地址:http://m.5511xx.com/article/cdohdoj.html