Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 열공하자
- SSE
- EventSource
- 파티셔닝
- PostgreSQL
- partitioning
- ServerSentEvent
- Lag
- node.js란
- 실시간알림
- 성장기
- Partition
- 개발자
- Node.js기본
- localStorage
- node.js
- frontend
- mariadb
Archives
- Today
- Total
써치킴의 우당탕탕 개발 블로그
[Vue.js][Ch2][Vue 문법] 컴포넌트 - Provide, Inject 본문
일반적으로 데이터를 부모에서 자식 컴포넌트로 전달해야할 때 props를 사용한다.
특정한 두 컴포넌트 사이에 깊이 중첩된 컴포넌트가 있는 구조의 경우, 하위 컴포넌트에서 상위 컴포넌트의 무언가가 필요한 경우에 두 컴포넌트 사이의 모든 컴포넌트에 prop를 전달해야하므로 굉장히 번거로울 것이다.
provide, inject
부모 컴포넌트는 컴포넌트 계층 구조의 깊이와 상관없이 모든 자식에 대한 종속성 제공자 역할을 할 수 있다.
이 기능은 2개의 부분으로 구성된다.
-> 부모 컴포넌트는 데이터 제공을 위해 provide 옵션을 사용하며, 자식 요소는 데이터 사용을 위해 inject 옵션을 사용한다.
- provide 옵션에서 사용하는 변수를 inject 부분에서도 동일하게 사용해야 한다.
- provide를 사용할 땐, 기본적으로 반응성을 제공하지 않는다. => 부모 컴포넌트에서 데이터가 변경하더라도 하위 컴포넌트에서 데이터가 변경되지 않는다.
- 데이터를 전달해서 출력하는 용도로 만들거나, 반응성을 유지하게 작성해줘야 한다.
App.vue
|_ Parent.vue
|_ Child.vue
상단 구조라면
App.vue
<template>
<button @click="message = 'Good?'">Click!</button>
<h1>App : {{ message }}</h1>
<Parent />
</template>
<script>
import Parent from '~/components/Ex17_Parent'
import { computed } from 'vue'
export default {
components: {
Parent
},
data() {
return {
message: 'Hello world!'
}
},
provide() {
return {
// msg: this.message // provide를 사용할 땐, 반응성을 제공하지 않는다.
/* msg: computed(() => { // -> computed 콜백 함수를 사용하여 계산된 데이터 반환해 반응성 유지
return this.message;
})
하단처럼 생략가능 */
msg: computed(() => this.message )
}
}
}
</script>
Parent.vue
<template>
<Child/>
</template>
<script>
import Child from '~/components/Ex17_Child'
export default {
components: {
Child
}
}
</script>
Child.vue
<template>
<div>
Child: {{ msg }}
</div>
</template>
<script>
export default {
inject: ['msg'] // msg는 데이터로 취급
}
</script>
출력
클릭 전
클릭 후
'완벽하게 Vue.js' 카테고리의 다른 글
[Vue.js][Ch3][컴포지션API] 반응형 데이터(반응성) (0) | 2022.04.19 |
---|---|
[Vue.js][Ch2][Vue 문법] 컴포넌트 - Refs (0) | 2022.04.19 |
[Vue.js][Ch2][Vue 문법] 컴포넌트 - Slot (0) | 2022.04.18 |
[Vue.js][Ch2][Vue 문법] 컴포넌트 - Emit (0) | 2022.04.18 |
[Vue.js][Ch2][Vue 문법] 컴포넌트 - 속성 상속 (0) | 2022.04.18 |
Comments