그간 공부했던 vue2 내용 정리하고 얼른 vue3로 넘어가야지
컴포넌트간 통신 방식
컴포넌트는 기본적으로 고유한 데이터 유효범위를 갖는다.
그걸 서로 공유하려면 props라는 속성과, 이벤트를 활용하자
상위에서 하위로 전달 → props
하위에서 상위로 전달 → 이벤트
밑에 것들이 윗대가리들에게 이벤트를 해준다고 생각하자 ^_^
아 근데 이렇게 나눠두면 겁나 귀찮은데
그냥 다 하나로만 통신하면 안되나? ㅡㅡ
ㅇㅇ안됨
n방향 통신의 문제점 : 특정 상태, 데이터가 바꼈을 때 그로 인한 버그를 추적하기 어려움
통신 규칙(이벤트, props)이 생기면 추적이 쉬움
props
상위에서 하위로 이벤트를 발생시킴
(1) 데이터가 저장되어 있고 해당 데이터를 propsdata 이름으로 프롭스를 보냄
<app-header v-bind:propsdata="message"></app-header>
.
.
.
data: { message: '내 데이터를 받아라' }
(2) 정해진 곳(하위 컴포넌트)에서 가져올 수 있게됨
var appHeader = {
props: ['propsdata']
}
message 속 내용들 바꾸면 propsdata 도 바뀐다. (뷰의 reactivity)
event emit
(1) 하위에서 상위로 이벤트(passEvent)를 발생시킴
var appHeader = {
template: '<button v-on:click="passEvent">버튼</button>',
methods: {
passEvent: function() {
this.$emit('메세지')
}
}
}
(2) 이벤트 받아오기 (상위 컴포넌트)
<app-header v-on:pass="logText" />
event, props로 같은 레벨 간의 통신 방법
같은 레벨이면 바로 전달하지 못해서 위로 올렸다가(event) 내림(props)
그러니까 맨 처음엔 emit 으로 올리고 props를 등록하고 받으면 된다 ^^
'🧠 저장 > Vue' 카테고리의 다른 글
axios 간단 정리 (0) | 2023.12.13 |
---|---|
router 간단 정리 (0) | 2023.12.10 |
전역 컴포넌트, 지역 컴포넌트 (0) | 2022.09.29 |
method 속성, computed 속성 (0) | 2022.09.22 |
Vue 시작하기 + 기초 디렉티브(text, bind, model, if, for, on) (0) | 2022.09.20 |