customRef

博客介绍了JavaScript中自定义ref的作用,ref会自动为其下数据添加响应式,而customRef则能手动为数据添加响应式,属于前端开发领域的技术内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用:可以自定义ref

ref是自动为其下数据添加响应式,而customRef就是手动为其下数据添加响应式

<template>
	<input type="text" v-model="keyword">
	<h3>{{keyword}}</h3>
</template>
<script lang="ts" setup>
	import { customRef, ref } from 'vue'

	function myref(value) {
		let timer
		return customerRef((track, trigger) => {
			return {
				get() {	
					console.log(`从myref容器中读取数据,把初始化数据${value}给他`)
					// template中,h3里面的keyword是从get中读取的,当set已经将keyword的值修改了,但是h3里面的keyword一直不更新,是因为此处return的value是调用myref时传的初始化实参hello,所以页面不会更新
					// 所以要先在get里面调用customRef的track方法去追踪。再在set里面设置修改 value = newValue,然后还要调用customRef里面的trigger方法去通知页面更新
					track()
					return value
				},
				set(newValue) {
					console.log(`将myref容器中的数据修改,修改成:${value}`)	
					// 定时器是异步的,如果不清除定时器,会有bug,每次执行修改数据时,会卡顿,所以要清除定时器
					clearTimeout(timer)
					timer = setTimeout(() => {
						value = newvalue
						trigger()	// 通知vue去重新解析模板
					})
					
				}
			}
		})
	}
	let keyword = myref('hello')	// 使用自定义的ref
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值