Vue 구성 요소 통신$attrs,$listeners 실현 원리 분석
vue 통신 수단 은 props/emit,vuex,이벤트 bus,provide/inject 등 여러 가지 가 있 습 니 다.또 하나의 통신 방식 이 있 습 니 다.그것 은 바로$attrs 와$listeners 입 니 다.전에 이 두 api 를 들 었 습 니 다.시간 이 있 을 때 보충 하 는 것 입 니 다.이런 방식 은 매우 우아 해서 사용 해도 괜찮다.다음 예 는 모두 아버지,아들,손자,세 사람의 관 계 를 통 해 사용 방식 을 설명 한다.
$attrs
공식 설명:
부모 역할 영역 에서 prop 로 인식 되 지 않 고 가 져 오 는 특성 바 인 딩(class 와 style 제외)을 포함 합 니 다.하나의 구성 요소 가 prop 에 대해 설명 하지 않 았 을 때 모든 부모 역할 필드 의 바 인 딩(class 와 style 제외)을 포함 하고 v-ind="$attrs"를 통 해 내부 구성 요소 로 들 어 갈 수 있 습 니 다―높 은 등급 의 구성 요 소 를 만 들 때 유용 합 니 다.
나의 이해:
props 성명 을 제외 한 모든 귀속 속성 수신(class,style 제외)
도해:
child.vue 가 props 에서 name 속성 을 밝 혔 기 때문에$attrs 에는 age,gender 두 개의 속성 만 있 고 출력 결 과 는 다음 과 같 습 니 다.
{age: "20",gender: "man"}
또한 grandson.vue 에서 v-bind="$attrs"를 통 해 속성 을 계속 아래로 전달 할 수 있 으 며,grandson.vue 도 부모 구성 요소 의 속성 에 접근 할 수 있 습 니 다.이것 은 여러 속성 을 전달 할 때 매우 편리 하고,한 항목 씩 연결 하지 않 아 도 됩 니 다.
다른 속성 을 추가 하려 면 속성 을 계속 귀속 할 수 있 습 니 다.단,계속 연결 하 는 속성 과$attrs 의 속성 이 중복 되 었 을 때 계속 연결 하 는 속성 우선 순위 가 높 습 니 다.
$listeners
공식 설명:
부모 역할 영역 에 있 는(native 수식 기 를 포함 하지 않 는)v-on 이벤트 모니터 를 포함 합 니 다.이것 은 v-on="$listeners"를 통 해 내부 구성 요소 인 더 높 은 차원 의 구성 요 소 를 만 들 때 매우 유용 합 니 다.
나의 이해:
네 이 티 브 이벤트 수정자 가 있 는 모든 이벤트 모니터 를 수신 합 니 다.
도해:
parent.vue 에서 child.vue 에 두 개의 이벤트 가 연결 되 어 있 습 니 다.native click 이벤트 와 사용자 정의 이벤트 가 있 기 때문에 child.vue 에서$listeners 를 출력 한 결 과 는 다음 과 같 습 니 다.
{ customEvent: fn }
attrs 속성 과 마찬가지 로 v-on="$listeners"를 통 해 이벤트 감청 기 를 계속 아래로 전달 하여 grandson.vue 가 이벤트 에 접근 하도록 할 수 있 으 며$emit 를 사용 하여 parent.vue 의 함 수 를 촉발 할 수 있 습 니 다.
다른 이벤트 모니터 를 추가 하려 면 이 벤트 를 계속 연결 할 수 있 습 니 다.그러나 주의해 야 할 것 은 계속 연 결 된 이벤트 와$listeners 의 이벤트 가 중복 되 었 을 때 덮어 쓰 지 않 습 니 다.grandson.vue 가 customeEvent 를 촉발 할 때 child.vue 와 parent.vue 의 이벤트 가 모두 촉발 되 고 촉발 순 서 는 거품 과 유사 하 며 child.vue 부터 parent.vue 까지 입 니 다.
사용 필드:
구성 요소 의 값 을 전달 할 때 사용 합 니 다.할 아버 지 는 아버지 구성 요소 에 값 을 전달 합 니 다.아버지 구성 요 소 는$attrs 를 통 해 아버지 props 에 없 는 모든 속성 을 가 져 옵 니 다.아버지 구성 요 소 는 손자 구성 요소 에$attrs 와$listeners 를 연결 하여 손 구성 요 소 를 할아버지 가 전달 하 는 값 을 가 져 오고 할아버지 에 게 정의 하 는 방법 을 호출 할 수 있 습 니 다.
일부 UI 라 이브 러 리 에 대해 2 차 패 키 징 을 할 때 사용 합 니 다.예 를 들 어 element-ui 는 구성 요소 가 자신의 사용 장면 을 만족 시 키 지 못 할 때 2 차 패 키 징 을 하지만 자신의 속성 과 방법 을 유지 하려 고 합 니 다.그러면 이때$attrs 와$listens 는 완벽 한 해결 방안 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue Render 함수로 DOM 노드 코드 인스턴스 만들기render에서createElement 함수를 사용하여 DOM 노드를 만드는 것은 직관적이지 않지만 일부 독립 구성 요소의 디자인에서 특수한 수요를 충족시킬 수 있습니다.간단한 렌더링 예는 다음과 같습니다. 또한 v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.