VUE의 고차 구성 요소 (HOC)는 무엇입니까?
VUE의 HOCS는 구성 요소를 취하고 향상된 버전을 반환하여로드 상태 또는 인증 점검과 같은 논리 재사용을 가능하게하는 기능입니다. 1. 구성 요소의 논리를 재사용하는 데 도움이됩니다. 2. 설정을 추상화하여 구성 요소를 깨끗하게 유지하십시오. 3. 내부 변경없이 기능을 추가하십시오. 그러나 Modern VUE 3에서는 래퍼 지옥이나 이름 충돌과 같은 문제의 유연성이 향상되고 더 낮은 문제의 위험이 낮아 공유 논리에 대한보다 관용적이고 유지 가능한 솔루션이됩니다.
고차 성분 (HOC)은 구성 요소 로직을 재사용하기위한 vue.js (및 React)의 패턴입니다. HOC는 일반적으로 RECT와 관련이 있지만 VUE에 개념을 적용 할 수 있습니다. Vue의 생태계는 비슷한 목표를 달성하기 위해 더 많은 관용적 인 방법 (복합 및 Mixins와 같은)을 제공합니다.

VUE에서 고차 구성 요소는 본질적으로 구성 요소를 입력으로 취하고 추가 소품, 동작 또는 논리로 새로운 향상된 구성 요소를 반환하는 함수입니다.
왜 hocs를 사용합니까?
hocs가 당신을 도와줍니다 :

- 여러 구성 요소 (예 : 데이터 가져 오기, 인증 점검)에서 논리를 재사용합니다 .
- 복잡한 설정 로직을 추상화하여 구성 요소를 깨끗하게 유지하십시오 .
- 내부를 수정하지 않고 추가 기능으로 구성 요소를 랩핑하십시오 .
VUE 3은 (구성 API를 통해) 작곡용을 사용하는 것을 장려하지만 대신 HOC를 이해하는 것이 유용합니다. 특히 구형 코드베이스로 작업 할 때 또는 구성 요소를 동적으로 향상시켜야 할 때.
Vue에서 HOC를 만드는 방법
다음은 VUE 3의 HOC의 기본 예입니다 (명확성을 위해 옵션 API 스타일 사용) :

// hoc/withload.js 로드 링 (WrappedComponent) {{ 반품 { 소품 : WrappedComponent.props || [], 데이터 () { 반품 { IsLoading : True, }; }, Async Mounted () { //로드 시뮬레이션 새로운 약속을 기다리고 있습니다 (resolve => settimeout (resolve, 1000)); this.isloading = false; }, 렌더 () { // 모든 원래 소품을 내려 놓고 IsLoading을 추가하십시오 const props = {... this. $ props, isloading : this.isloading}; 이 is.isloading을 반환하십시오 ? H ( 'div', 'loading ...') : h (WrappedComponent, props, this. $ 슬롯); } }; }
이제 구성 요소에서 사용하십시오.
'./hoc/withloading'에서 {withloading} 가져 오기; './components/userdata.vue'에서 userData 가져 오기; const userDataWitHloading = WithLoading (userData); 내보내기 기본값 { 구성 요소 : { userdatawithloading } };
이것은 UserData
로딩 상태로 랩합니다. 실제 구성 요소를 렌더링하기 전에 1 초 동안 로딩 메시지를 알 수 있습니다.
일반적인 사용 사례
- 인증 가드 : 경로 구성 요소를 감싸서 사용자가 로그인되었는지 확인하십시오.
- 데이터 가져 오기 : 렌더링하기 전에 비동기 데이터를 주입합니다.
- 로깅 또는 분석 : 구성 요소가 마운트 할 때 추적합니다.
- 권한 점검 : 사용자 역할에 따라 구성 요소를 비활성화하거나 숨 깁니다.
예 : withAuth
Hoc
WithAuth (WrappedComponent, QuessureRole = null) {{ 반품 { 설정() { const user = useauth (); // 이것이 현재 사용자를 반환한다고 가정합니다 if (! user.isloggedin) { return () => h ( 'div', '로그인하십시오.'); } if (requirelole && user.role! == 필수 롤) { return () => h ( 'div', 'access denied.'); } return () => h (WrappedComponent); } }; }
HOCS vs. Composables vs. Mixin
접근하다 | 프로 | 단점 |
---|---|---|
hocs | 재사용 가능하고 명확한 래퍼 로직 | Vue에서 랩퍼 지옥으로 이어질 수 있습니다 |
믹스 인 | 병합하기 쉬운 옵션 | 이름 충돌, 불분명 한 종속성 |
복합식 | Vue 3에서 유연하고 나무가 흔들리는 일류 | 구성 API 지식이 필요합니다 |
? Modern Vue (3)에서는 작곡가를 선호합니다 . 그들은 hocs 나 mixins보다 더 유연하고 오류가 적습니다.
예를 들어, 위의 로딩 로직은 다음과 같이 작성 될 수 있습니다.
// composables/useloading.js 내보내기 기능 useloading (Delay = 1000) { const isloading = ref (true); onmounted (async () => { 새로운 약속을 기다리고 있습니다 (resolve => settimeout (resolve, delay)); isloading.value = false; }); 반환 {isloading}; }
그런 다음 모든 구성 요소에서 직접 사용하십시오.
설정() { const {isloading} = useloading (); 반환 {isloading}; }
최종 생각
Vue에서는 HOC가 가능 하지만 논리를 공유하는 관용적 인 방법은 아닙니다. VUE의 반응성 시스템 및 구성 API는 컴포지블이 대부분의 사용 사례에 더 잘 맞습니다.
즉, HOC는 여전히 라이브러리의 동적 랩핑 구성 요소 또는 렌더링 논리를 추상적으로해야 할 때와 같은 고급 시나리오에서 유용 할 수 있습니다.
그래서:
vue에서 hocs를 사용할 수 있습니다
∎ 그들은 React에서 영감을 받았습니다
❌ 그러나 대부분의 경우, 종합 가능한 기능은 더 깨끗하고 보수가 가능합니다.
기본적으로, HOC에 도달하기 전에 두 번 생각하십시오. 아마도 더 단순하고 더 vue와 같은 방법 일 것입니다.
위 내용은 VUE의 고차 구성 요소 (HOC)는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

Computed에는 캐시가 있으며 의존성이 변경되지 않은 상태에서는 여러 개의 액세스가 재 계산되지 않으며, 방법이 호출 될 때마다 방법이 실행됩니다. 2. Computed는 반응 형 데이터를 기반으로 계산에 적합합니다. 메소드는 매개 변수가 필요하거나 호출이 자주 발생하는 시나리오에 적합하지만 결과는 응답 데이터에 의존하지 않습니다. 3. Computed Getters 및 Setters는 데이터의 양방향 동기화를 실현할 수 있지만 방법은 지원되지 않습니다. 4. 요약 : 먼저 컴퓨팅을 사용하여 성능을 향상시키고 매개 변수를 전달하거나 작업을 수행하거나 캐시를 피할 때 메소드를 사용하여 "컴퓨팅을 사용할 수 있다면 메소드를 사용하지 않습니다"라는 원칙에 따라 방법을 사용하십시오.

vuelifecyclehooksallowyoutoexecutecodeatspecificstagesfictingsocomponent'sexistence.1. beforecreatunswhemecomponentisinitialized, beforereactivitiveissetup.2

환경 변수 관리는 VUE 프로젝트에서 중요하며 빌드 도구를 기반으로 올바른 방법을 선택해야합니다. 1. Vuecli 프로젝트는 vue_app_ 접두사와 함께 .env 파일을 사용하며, process.env.vue_app를 통해 액세스합니다. 2. Vite 프로젝트는 import.meta.env.vite_를 통해 액세스하는 vite_ 접두사를 사용합니다. 3. 해당 파일을로드하기 위해 사용자 정의 모드를 지원하고 .env.local 클래스 파일을 .gitignore에 추가해야합니다. 4. 항상 프론트 엔드에 민감한 정보를 노출하지 말고 참조를 위해 .env.example을 제공하고 런타임에 확인하십시오.

apolloclient 및 관련 종속성 패키지를 설치하고 vue2 또는 vue3에 따라 클라이언트를 구성하십시오. 2. ProvideApolloclient를 통해 vue3의 클라이언트 인스턴스를 제공하고 vue2의 vueapollo 플러그인을 사용하십시오. 3. 결합 된 API의 api와 usemutation을 사용하여 구성 요소의 쿼리 및 변경을 시작합니다. 4. 변수를 사용하고 refetch를 사용하여 동적 데이터 수집 및 새로 고침, 선택적 폴링 및 업데이트를 달성합니다. 5. 로딩 및 오류 상태를 사용하여 사용자 경험을 최적화하고 서스펜스 또는 셰이크를 결합하여 상호 작용 유창성을 향상시킵니다. 6. HTTP 링크 헤더를 통해 인증 정보를 추가하고 캐시, 조각 및 쿼리 파일을 사용하여 구성하고 제공합니다.

UsecomputedPropertiesfordectiveSplay, astheyarececedandonlyre-evalubateWhendenciesChange; 2.UsewatchforeXecutingsIdeFectsLikeApicallSorupdatingStorageInResponsetodatachanges, inferteRecttovaluechangsyncope-syncope

Vuenative를 사용하여 모바일 애플리케이션을 작성하십시오. vue.js 구문을 사용하여 rectnative와 결합 된 크로스 플랫폼 개발을 달성하는 효과적인 방법입니다. 2. 먼저 개발 환경을 구성하고 Node.js 및 DexoCli를 설치하고 npxcreate-react-native-vue-app (templatevue-native)를 통해 프로젝트를 만듭니다. 3. 프로젝트 디렉토리를 입력하고 NPMStart를 실행하고 엑스 포고 응용 프로그램을 통해 QR 코드를 스캔하여 모바일 장치에서 미리보기; 4. .Vue 파일 구성 요소, 사용 및 구조를 작성하고 소문자의 뷰, 텍스트 및 버튼과 같은 소문자 반응 구성 요소 사용에주의를 기울이십시오.

teleportinvue3allowsrendertecomponent'StemplateinaddomLocationInservingItsLogicalPlothInTeComponentTree; 1. ITUSTHECOMPONTIONSTARGETDOMNODE, SALLAS "BODY"또는 "#MODAL-ROOT"; 2.THETELEPORTED

기능 구성 요소는 VUE2에서 사용하여 소품에만 의존하는 시나리오에 적합한 상태의 고성능 프리젠 테이션 구성 요소를 생성합니다. 1. 기능을 정의하려면 : true : 기능을 설정해야합니다. 렌더링 함수를 통해 소품과 컨텍스트를 수신하려면 vnode를 반환해야합니다. 2. 사용시 일반 구성 요소와 같은 소품 및 이벤트를 등록하고 전달하십시오. 3. 슬롯을 처리하려면 컨텍스트에서 슬롯 ()과 어린이를 가져와야합니다. 반응 형 데이터, 수명주기 후크 또는 V- 모델이 필요한 시나리오에는 기능 구성 요소가 적합하지 않습니다. vue3는 기능적 옵션을 제거하고 기능적 쓰기 또는 간결한 조합 구성 요소로 대체했습니다. 성능 최적화는 comp에 더 의존합니다
