Vue.js 컴포넌트 통신
지난 컴포넌트 게시글에서 두번째 글입니다. 해당 컨텐츠는 "Vue.js 시작하기 - Age of Vue.js"의 강의 내용을 정리한 자료입니다.
- 이전 글 : VueJs 시작하기
컴포넌트 통신에 대해서 좀 더 자세하게 이야기합니다.
#
컴포넌트 통신 방법#
컴포넌트란.지난 게시글에 설명한 컴포넌트의 정의에 대해 다시 정의하면 다음과 같습니다.
컴포넌트는 화면의 영역을 구분하여 개발할 수 있는 뷰의 기능입니다. 컴포넌트 기반으로 화면을 개발하는 경우, 코드의 재사용성이 올라가고 빠르게 화면을 제작할 수 있습니다.
#
컴포넌트 통신뷰 컴포넌트는 각각의 고유한 데이터 유효범위를 가지고 있습니다. 따라서 컴포넌트 간에 데이터를 주고 받기 위해서는 아래의 규칙을 지켜야합니다.
- Props 속성 : 상위에서 하위로 데이터를 내려주는 것
- 이벤트 발생 : 하위에서 상위로 이벤트를 올렺둠
이 규칙을 준수하므로 이벤트를 추적할 수 있습니다.
#
Props 속성Props 속성은 컴포넌트 간에 데이터를 전달할 수 있는 컴포넌트 통신 방법입니다. 이는 상위 컴포넌트에서 하위 컴포넌트로 내려가는 데이터 속성입니다.
#
props 속성 코드 형식Props 속성을 사용하기 위해서는 하위 컴포넌트의 컴포넌트 내용과 상위 컴포넌트의 템플릿에 각각 코드를 추가해야합니다.
#
props 속성 코드 예시이를 구현한 예시는 다음과 같습니다.
#
Event Emit이벤트 발생은 컴포넌트의 통신 방법 중 하위 컴포넌트에서 상위 컴포넌트로 통신하는 방식입니다.
#
Event 발생 코드 형식하위 컴포넌트의 메서드나 라이프 사이클 훅과 같은 곳에서 아래와 같은 코드를 추가합니다.
#
Event 코드 예시간한단 이벤트 발신, 수신 코드는 다음과 같습니다.
위 코드를 실행시켜보면, 하위 컴포넌트인 childComponent에서 sendEvent()
메서드가 실행되면 update
라는 이벤트가 발생되고, 이를 상위 컴포넌트인 Root Component의 v-on
디렉티브로 이벤트를 받아서 showAlert()
메서드를 실행하는 코드입니다.
실행 결과는 event recived라는 경고창이 발생합니다.
#
this에 대한 좋은 글JS에서 this는 크게 4가지 역할을 가지고 있습니다.
- https://www.w3schools.com/js/js_this.asp
- https://medium.com/better-programming/understanding-the-this-keyword-in-javascript-cb76d4c7c5e8
#
같은 컴포넌트 레벨 간의 통신 방법같은 컴포넌트 레벨 간의 통신은 다음과 같습니다.
Tip) 같은 텍스트 선택 단축키
- 윈도우 : Ctrl + d
- 맥 : Cmd + d
예제 코드는 다음과 같습니다.
이와 같이 구현할수 있으며, 해당 코드를 실행 시 app-content
에서 event를 발생시켜서 이 데이터를 상위 컴포넌트인 root로 보내게 되고, app-header
에서 props를 받아서 데이터를 받게 됩니다.