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의 선택은 주로 성능 최적화, 확장 성 및 사용자 경험의 세 가지 측면에 중점을 둡니다. 1. 성능 최적화 : Netflix는 React를 주요 프레임 워크로 선택하고 Speedcurve 및 Boomerang과 같은 도구를 개발하여 사용자 경험을 모니터링하고 최적화했습니다. 2. 확장 성 : 마이크로 프론트 엔드 아키텍처를 채택하여 응용 프로그램을 독립 모듈로 분할하여 개발 효율성 및 시스템 확장 성을 향상시킵니다. 3. 사용자 경험 : Netflix는 재료 -UI 구성 요소 라이브러리를 사용하여 A/B 테스트 및 사용자 피드백을 통해 인터페이스를 지속적으로 최적화하여 일관성과 미학을 보장합니다.

NetflixusesAcustomFrameworkCalled "Gibbon"BuiltonReact, NotreactorVuedirectly.1) TeamExperience : 2) ProjectComplexity : vueforsimplerProjects, 3) CustomizationNeeds : reactoffersmoreflex.4)

Netflix는 주로 프레임 워크 선택의 성능, 확장 성, 개발 효율성, 생태계, 기술 부채 및 유지 보수 비용을 고려합니다. 1. 성능 및 확장 성 : Java 및 SpringBoot는 대규모 데이터 및 높은 동시 요청을 효율적으로 처리하기 위해 선택됩니다. 2. 개발 효율성 및 생태계 : React를 사용하여 프론트 엔드 개발 효율성을 향상시키고 풍부한 생태계를 활용하십시오. 3. 기술 부채 및 유지 보수 비용 : Node.js를 선택하여 유지 보수 비용과 기술 부채를 줄이기 위해 마이크로 서비스를 구축하십시오.

Netflix는 주로 VUE가 특정 기능을 위해 보충하는 프론트 엔드 프레임 워크로 React를 사용합니다. 1) React의 구성 요소화 및 가상 DOM은 Netflix 애플리케이션의 성능 및 개발 효율을 향상시킵니다. 2) VUE는 Netflix의 내부 도구 및 소규모 프로젝트에 사용되며 유연성과 사용 편의성이 핵심입니다.

vue.js는 복잡한 사용자 인터페이스를 구축하는 데 적합한 점진적인 JavaScript 프레임 워크입니다. 1) 핵심 개념에는 반응 형 데이터, 구성 요소화 및 가상 DOM이 포함됩니다. 2) 실제 응용 분야에서는 TODO 응용 프로그램을 구축하고 Vuerouter를 통합하여 시연 할 수 있습니다. 3) 디버깅 할 때 VuedeVtools 및 Console.log를 사용하는 것이 좋습니다. 4) 성능 최적화는 V-IF/V- 쇼, 목록 렌더링 최적화, 구성 요소의 비동기로드 등을 통해 달성 할 수 있습니다.

vue.js는 중소형 프로젝트에 적합하지만 REACT는 크고 복잡한 응용 프로그램에 더 적합합니다. 1. Vue.js의 응답 형 시스템은 종속성 추적을 통해 DOM을 자동으로 업데이트하여 데이터 변경을 쉽게 관리 할 수 있습니다. 2. 반응은 단방향 데이터 흐름을 채택하고 데이터 흐름에서 하위 구성 요소로 데이터가 흐르고 명확한 데이터 흐름과 곤란하기 쉬운 구조를 제공합니다.

vue.js는 중소형 프로젝트 및 빠른 반복에 적합한 반면 React는 크고 복잡한 응용 프로그램에 적합합니다. 1) vue.js는 사용하기 쉽고 팀이 불충분하거나 프로젝트 규모가 작는 상황에 적합합니다. 2) React는 더 풍부한 생태계를 가지고 있으며 고성능 및 복잡한 기능적 요구가있는 프로젝트에 적합합니다.

VUE에서 태그의 점프를 구현하는 방법에는 다음이 포함됩니다. HTML 템플릿의 A 태그를 사용하여 HREF 속성을 지정합니다. VUE 라우팅의 라우터 링크 구성 요소를 사용하십시오. javaScript 에서이. $ router.push () 메소드를 사용하십시오. 매개 변수는 쿼리 매개 변수를 통해 전달 될 수 있으며 동적 점프를 위해 라우터 옵션에서 경로가 구성됩니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

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

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
