customRef 函数
- 使用 customRef 函数创建一个自定义的 ref ,并对其依赖项跟踪和更新触发进行显示控制
- customRef 接收一个函数作为参数,这个函数接收两个函数作为参数 track (通知vue需要追踪后续内容的变化) 和 trigger (通知vue重新解析模板)。
<template> <input type="text" v-model="keyWord"> <div>{{keyWord}}</div> </template> <script> import {customRef, } from "vue"; export default { setup() { // 自定义一个 myRef function myRef(value) { return customRef((track, trigger) => { return { get() { track() // 追踪后续数据的变化 return value }, set(newValue) { value = newValue trigger() // 重新解析模板 } } }) } let keyWord = myRef('hello') return { keyWord, } } } </script>
- 实现自定义 myref 延迟更新模板
<template> <input type="text" v-model="keyWord"> <div>{{keyWord}}</div> </template> <script> import {customRef, } from "vue"; export default { setup() { // 自定义一个 myRef function myRef(value, delay) { let timer = null; return customRef((track, trigger) => { return { get() { track() // 追踪后续数据的变化 return value }, set(newValue) { value = newValue timer = null timer = setTimeout(() => { trigger() // 重新解析模板 }, delay) } } }) } let keyWord = myRef('hello', 3000) return { keyWord, } } } </script>