Vue에서 customRef 기능을 어떻게 사용하나요? 다음 글에서는 VueJs에서 customRef 함수를 사용하는 방법을 보여드리겠습니다. 도움이 되기를 바랍니다.
ref
는 Vue
에서 공식적으로 제공하는 composition API
입니다. 사용자는 맨 아래 계층이 데이터 수집 및 응답성을 구현하는 방법에 주의를 기울일 필요가 없습니다. 그러나 때로는 복잡하고 특별한 요구 사항이 있는 경우 자체 휠을 구축하고 내부 기능을 구현해야 합니다. 수동 및 기본 구조. ref
是Vue
官方提供的componsition API
,将一个非响应式数据转变为响应式数据的函数,至于底层怎么实现数据的收集与响应式
使用者无需去关注,相当于就是精装电脑,然而有时候,针对一些复杂特殊的需求,我们需要自己造轮子,自己手动原生的去实现内部结构。
实现基础的功能的同时,还要进行额外的拓展,那么这时候就需要自定义ref
了的,它就相当于是组装式的电脑,内部结构需要自己去组装、实现。
而非直接从商城里购买,用一些现成的零部件组装一个类似精装的电脑,甚至还可以进行拓展,在实现一个定制化复杂的功能需求时,这个自定义ref
就很有用。【相关推荐:vuejs视频教程、web前端开发】
示例-延迟显示
想要在input
中实现一个数据的实时收集与实时展示,需要使用v-model
指令
<template> <input type="text" v-model="keyword" /> <h3 id="keyword">{{keyword}}</h3> </template> <script setup> import { ref } from "vue"; let keyword = ref("itclanCoder"); // Vue官方提供的ref函数,返回一个响应式数据 </script>
现在不能用官方提供的ref
函数,也就是自己要自顶一个类似ref
函数,如下所示
<template> <input type="text" v-model="keyword" /> <h3 id="keyword">{{keyword}}</h3> </template> <script setup> import { customRef } from 'vue'; // 自定义的一个ref,名为myRef,自定义ref就是一个函数 function myRef(value) { // 自定义,自己得写逻辑,customRef必须要传入一个函数,而且函数里面必须要返回一个对象 return customRef((track,trigger) => { // 第一个return 是把自定义的内容返回出去,第二个return 是返回里面的逻辑,返回get,和set return { get() { // 读取数据,这个value是初始化传递过来的数据 console.log('get',`${value}`); track(); // 追踪一下数据的改变,通知vue最终value数据的变化,提前和get沟通一下,让value是有作用的 return value }, set(newValue) { // 设置数据,新的值,修改数据 value = newValue; trigger(); // customRef函数内接收两个参数,一个是track,另一个就是trigger,通知vue去重新解析模板 } } }); } let keyword = myRef("itclanCoder"); // 自己定义一个ref </script>
通过上面的方式就可实现自定义数据的收集和展示,如果想要等待几秒后,触发,那么只需要在set
加一个定时器就够了的,其他不变
set(newValue) { setTimeout(() => { value = newValue; trigger(); // 通知vue去重新解析模板 },500) }
解决持续回显,误触发的问题,定时器一直开通的问题
<template> <input type="text" v-model="keyword" /> <h3 id="keyword">{{keyword}}</h3> </template> <script setup> import { customRef } from 'vue'; // 自定义的一个ref,名为myRef,自定义ref就是一个函数 function myRef(value) { let timer; // 开启一个定时器 // 自定义,自己得写逻辑,customRef必须要传入一个函数,而且函数里面必须要返回一个对象 return customRef((track,trigger) => { // 第一个return 是把自定义的内容返回出去,第二个return 是返回里面的逻辑,返回get,和set return { get() { // 读取数据,这个value是初始化传递过来的数据 console.log('get',`${value}`); track(); // 追踪一下数据的改变,通知vue最终value数据的变化,提前和get沟通一下,让value是有作用的 return value }, set(newValue) { // 设置数据,新的值,修改数据 clearInterval(timer); // 先清除定时器,在开 timer = setTimeout(() => { value = newValue; trigger(); // customRef函数内接收两个参数,一个是track,另一个就是trigger,通知vue去重新解析模板 },500) } } }); } let keyword = myRef("itclanCoder"); // 自己定义一个ref </script>
这个customRef
比较难以理解的是,它需要在自定义ref
函数中返回出去,同时,接收一个工厂函数作为参数,这个工厂函数接受track
和trigger
两个函数
作为参数,并返回一个带有get和set方法的对象
一般来说,track()
在get()
方法中的返回值前进行调用,追踪一下数据的改变,通知vue
最终数据的变化,而trigger()
函数则应该在set()
函数的末尾调用
通知vue
去重新解析模板,更新页面数据
最后就是实现等待多长时间,稍后显示,使用一个定时器去实现,解决频繁误触发的问题,常规的解决办法,先清除定时器,然后在开启定时器
总结
自定义ref(customRef())
函数是一个非常有用的东西,相当于是对ref
ref
를 사용자 정의해야 합니다. 이는 내부 구조를 직접 조립하는 것과 같습니다. 쇼핑몰에서 직접 구매하는 대신, 미리 만들어진 부품을 사용하여 하드커버 같은 컴퓨터를 조립할 수 있으며, 맞춤화되고 복잡한 기능 요구사항을 실현할 경우 이 맞춤형 ref
를 사용하여 확장할 수도 있습니다. >매우 유용합니다. [관련 권장사항: vuejs 비디오 튜토리얼, 웹 프런트엔드 개발]
예제 지연 표시 h2> 입력
에서 데이터의 실시간 수집 및 실시간 표시를 구현하려면 v-model
명령을 사용해야 합니다🎜rrreee🎜수 없습니다. 이제 공식적으로 제공되는 refref
와 유사한 함수를 추가해야 합니다🎜rrreee🎜위 방법을 사용하면 몇 초 동안 기다리려면 타이머를 설정
에 추가하면 되고 나머지는 변경되지 않습니다. 🎜rrreee🎜연속 에코, 잘못된 트리거 문제를 해결하세요. , 타이머가 항상 켜져 있는 문제🎜rrreee🎜 이 customRef
에 대해 더 이해하기 어려운 점은 사용자 정의 ref
함수에서 반환되어야 한다는 것입니다. 동시에, 이 팩토리 함수는 track
및 trigger
두 가지 함수 🎜🎜를 매개변수로 받아들이고 get 및 set을 사용하여 객체를 반환합니다. 🎜🎜일반적으로 track()
은 get() 메서드에서 반환 값 앞에 호출되어 데이터 변경 사항을 추적하고 vue
에 알립니다. code>의 최종 데이터가 변경되고 trigger()
함수가 변경되는 동안 set()
함수 끝에서 🎜🎜를 호출하여 vue를 사용하여 템플릿을 다시 구문 분석하고 페이지 데이터를 업데이트합니다. 🎜🎜마지막 단계는 대기 시간을 인식하는 것이며, 이는 나중에 표시될 것입니다. 타이머를 사용하여 자주 발생하는 잘못된 트리거 문제를 해결하세요. 해결책은 타이머를 먼저 지운 다음 타이머를 켜는 것입니다🎜<h2 data-id="heading-2">요약</h2>🎜사용자 정의 <code>ref(customRef())
함수는 다음과 같습니다. 매우 유용한 기능입니다. 수동으로 구현할 수 있습니다. 내부 구현이 복잡하고 직접 경험하고 연습해야 합니다🎜🎜 (동영상 공유 학습: 🎜 vuejs 입문 튜토리얼🎜, 🎜기본 프로그래밍 영상🎜)🎜
위 내용은 Vue에서 customRef 함수를 사용하는 방법을 설명하는 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Netflix의 프론트 엔드 기술 스택은 주로 React 및 Redux를 기반으로합니다. 1. 반응은 고성능 단일 페이지 응용 프로그램을 구축하는 데 사용되며 구성 요소 개발을 통해 코드 재사용 성 및 유지 보수를 향상시킵니다. 2. Redux는 상태 변경이 예측 가능하고 추적 할 수 있도록 국가 관리에 사용됩니다. 3. 도구 체인에는 코드 품질과 성능을 보장하기위한 웹 팩, 바벨, 농담 및 효소가 포함됩니다. 4. 성능 최적화는 코드 세분화, 게으른로드 및 서버 측 렌더링을 통해 사용자 경험을 향상시킵니다.

vue.js는 대화 형 사용자 인터페이스를 구축하는 데 적합한 점진적인 프레임 워크입니다. 핵심 기능에는 응답 시스템, 구성 요소 개발 및 라우팅 관리가 포함됩니다. 1) 응답 시스템은 Object.DefineProperty 또는 프록시를 통한 데이터 모니터링을 실현하고 인터페이스를 자동으로 업데이트합니다. 2) 구성 요소 개발을 통해 인터페이스를 재사용 가능한 모듈로 분할 할 수 있습니다. 3) Vuerouter는 단일 페이지 응용 프로그램을 지원하여 사용자 경험을 향상시킵니다.

vue.js의 주요 단점은 다음과 같습니다. 1. 생태계는 비교적 새롭고 타사 라이브러리와 도구는 다른 프레임 워크만큼 풍부하지 않습니다. 2. 학습 곡선은 복잡한 기능에서 가파르게됩니다. 3. 지역 사회 지원과 자원은 반응과 각도만큼 광범위하지 않다. 4. 대규모 응용 프로그램에서 성능 문제가 발생할 수 있습니다. 5. 버전 업그레이드 및 호환성 문제가 더 큽니다.

Netflix는 React를 프론트 엔드 프레임 워크로 사용합니다. 1. 반응의 구성 요소 개발 및 가상 DOM 메커니즘은 성능 및 개발 효율성을 향상시킵니다. 2. Webpack 및 Babel을 사용하여 코드 구성 및 배포를 최적화하십시오. 3. 성능 최적화를 위해 코드 세분화, 서버 측 렌더링 및 캐싱 전략을 사용하십시오.

vue.js의 인기에는 단순성과 쉬운 학습, 유연성 및 고성능이 포함됩니다. 1) Progressive Framework 설계는 초보자가 단계별로 학습하는 데 적합합니다. 2) 구성 요소 기반 개발은 코드 유지 관리 및 팀 협업 효율성을 향상시킵니다. 3) 반응 형 시스템과 가상 DOM은 렌더링 성능을 향상시킵니다.

vue.js는 사용하기 쉽고 부드러운 학습 곡선이 있으며 초보자에게 적합합니다. React는 더 가파른 학습 곡선을 가지고 있지만 유연성이 강하기 때문에 숙련 된 개발자에게 적합합니다. 1. vue.js는 간단한 데이터 바인딩 및 프로그레시브 디자인을 통해 쉽게 시작할 수 있습니다. 2. 반응은 Virtual DOM 및 JSX에 대한 이해가 필요하지만 유연성과 성능 이점이 높아집니다.

Vue.js는 빠른 개발 및 소규모 프로젝트에 적합한 반면 React는 크고 복잡한 프로젝트에 더 적합합니다. 1.vue.js는 간단하고 배우기 쉽고 빠른 개발 및 소규모 프로젝트에 적합합니다. 2. 반응은 강력하고 크고 복잡한 프로젝트에 적합합니다. 3. vue.js의 진보적 인 특징은 점차적으로 기능을 도입하는 데 적합합니다. 4. React의 구성 요소 및 가상 DOM은 복잡한 UI 및 데이터 집약적 인 응용 프로그램을 처리 할 때 잘 수행됩니다.

vue.js와 반응은 각각 고유 한 장점과 단점이 있습니다. 선택할 때는 팀 기술, 프로젝트 규모 및 성과 요구 사항을 종합적으로 고려해야합니다. 1) vue.js는 학습 곡선이 낮은 빠른 개발 및 소규모 프로젝트에 적합하지만 깊은 중첩 객체는 성능 문제를 일으킬 수 있습니다. 2) REACT는 풍부한 생태계가있는 크고 복잡한 응용 분야에 적합하지만 자주 업데이트하면 성능 병목 현상이 발생할 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기