Vue 구성 요소 통신: 상위 구성 요소와 하위 구성 요소 간에 어떻게 통신합니까?

王林
풀어 주다: 2023-07-07 19:08:01
원래의
1154명이 탐색했습니다.

Vue 구성 요소 통신: 상위 구성 요소와 하위 구성 요소 간에 통신하는 방법은 무엇입니까?

Vue는 웹 애플리케이션을 구축하는 구성 요소 기반 방법을 제공하는 인기 있는 JavaScript 프레임워크입니다. 실제 개발에서는 부모 컴포넌트와 자식 컴포넌트 간의 통신이 필요한 상황에 자주 직면합니다. 이 기사에서는 Vue에서 일반적으로 사용되는 상위-하위 구성 요소 통신 방법을 소개하고 해당 코드 예제를 제공합니다.

Props

Props는 Vue의 상위 컴포넌트와 하위 컴포넌트 간에 가장 일반적으로 사용되는 통신 방법입니다. 이를 통해 상위 구성 요소가 하위 구성 요소에 데이터를 전달할 수 있습니다. 하위 구성요소에서 props는 상위 구성요소가 전달한 데이터를 수신하기 위한 배열 또는 객체로 선언됩니다.

     
로그인 후 복사

위의 예에서 상위 구성 요소는 message라는 prop을 하위 구성 요소에 전달합니다. 하위 구성 요소는 전달된 데이터를 받기 위해 props 배열을 통해 동일한 이름의 속성을 선언합니다. 하위 컴포넌트의 템플릿에서는 수신된 데이터를 보간식 {{ message }}를 통해 표시할 수 있습니다.

Emit

상위 구성 요소에서 하위 구성 요소로 데이터를 전달하는 것 외에도 하위 구성 요소에서 상위 구성 요소로 데이터를 보내거나 이벤트를 트리거해야 하는 경우가 많습니다. Vue는 하위 구성요소가 Emit을 통해 상위 구성요소와 통신할 수 있는 방법을 제공합니다.

     
로그인 후 복사

위 예에서 하위 구성 요소의 버튼 클릭 이벤트는 updateRating 메서드를 트리거하고 this.$emit(' rating-updated', rating) 이벤트를 통해 rating-updated라는 사용자 정의 값을 상위 구성 요소로 보냅니다. 등급 데이터 등급을 통과했습니다. 하위 구성 요소에서 발생한 등급 업데이트 이벤트를 수신하고 updateRating 메서드에서 이벤트를 처리하려면 상위 구성 요소에서 @ating-updated="updateRating"을 사용하세요.

$refs

때로는 상위 구성 요소에서 직접 하위 구성 요소의 속성이나 메서드에 액세스해야 하는 경우가 있습니다. Vue는 이 직접 액세스 방법을 구현하기 위해 $refs 속성을 제공합니다.

     
로그인 후 복사

위의 예에서 상위 구성 요소의 버튼 클릭 이벤트는 callChildMethod 메서드를 호출합니다. 메서드 내에서 this.$refs.childComponent는 하위 구성 요소에 액세스하고 하위 구성 요소의 childMethod 메서드를 호출하는 데 사용됩니다.

Provide/Inject

Provide/Inject는 상위 구성 요소가 레이어별로 명시적으로 전달하지 않고도 모든 하위 구성 요소에 데이터를 제공할 수 있도록 하는 고급 구성 요소 통신 방법입니다. 이 통신 방법은 크로스 레벨 구성 요소 간의 통신에 적합합니다.

        
로그인 후 복사

위의 예에서 상위 컴포넌트는 Provide 메소드를 통해 하위 컴포넌트에 message라는 데이터를 제공합니다. 손자 구성 요소는 inject: ['message']를 통해 이 데이터를 주입하고 템플릿에서 {{ message }}를 사용하여 표시합니다.

위에서는 Vue에서 일반적으로 사용되는 상위-하위 구성 요소 통신 방법을 소개합니다. 각 방법에는 적용 가능한 시나리오가 있습니다. 실제 개발에서는 특정 요구에 따라 적절한 통신 방법을 선택할 수 있습니다. 이 글이 Vue 컴포넌트 통신을 이해하는 데 도움이 되기를 바랍니다!

참조 링크:

  • [Vue 문서 - 구성 요소 통신](https://cn.vuejs.org/v2/guide/comComponents.html#%E7%88%B6%E5%AD%90%E7%BB %84%E4%BB%B6%E9%80%9A%E4%BF%A1)

위 내용은 Vue 구성 요소 통신: 상위 구성 요소와 하위 구성 요소 간에 어떻게 통신합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.