vue3中compoisitonAPI(2)

2021-07-30  本文已影响0人  瓯海

1.toRefs和toRef

 //reactive包裹后的对象是响应式的,但是对象里面的数据进行解构之后不是响应式的
const info = reactive({ name: 'jack', age: 18 })
 //1. torefs:将reactive对象中的所有属性都转换为ref对象,数据是可响应的
 let { name, age } = toRefs(info)
//2.toref 将单个属性成员转换为ref对象,数据是可响应式的
  const age = toRef(info, 'age')
  //两者都传入的对象是reactive对象(可响应式对象)
  const btnclick = () => {
    //转换成ref对象后通过.value形式获取相应的值
      age.value++
    }

2.自定义ref customRef

实现一个简易防抖操作,先双向绑定一个输入框


v-model

实现Debounce操作

import { customRef } from 'vue'

export default function (value, delay = 1000) {
  //设置定时器
  let timer = null
  //返回一个customRef
  return customRef((track, trigger) => {
    return {
      get() {
        //收集依赖
        track()
        return value
      },
      set(newValue) {
        //清除定时器(在定时器没有结束并且又触发了响应,需要清除原来的定时器)
        clearTimeout(timer)
        timer = setTimeout(() => {
          value = newValue
          //触发响应
          trigger()
        }, delay);
      }
    }
  })
}

3.其他的API

上一篇 下一篇

猜你喜欢

热点阅读