1、概念
创建一个自定义的ref,并对其依赖项跟踪和更新触发进行显式控制。
2、代码示例
需求
使用customRef实现debounce的示例。
<template>
<h2>CustomRef的使用</h2>
<input type="text" v-model="keyword" />
<p>{{ keyword }}</p>
</template>
import { customRef, defineComponent, ref } from "vue";
function useDebouncedRef<T>(value: T, delay = 200) {
let timeOutId: number;
return customRef((track, trigger) => {
return {
get() {
track();
return value;
},
set(newValue: T) {
clearTimeout(timeOutId);
timeOutId = setTimeout(() => {
value = newValue;
trigger();
}, delay);
},
};
});
}
export default defineComponent({
name: "App",
setup() {
const keyword = useDebouncedRef("abc", 500);
return {
keyword,
};
},
});
|