javascript

[vue] provide와 inject 알아보기

2022. 7. 12. 21:20
728x90
반응형

props drilling

props를 전달, 전달, 전달 해야하는 상황

provide와 inject는 props drilling을 해결하기 위해 나왔다.

Provide / Inject

상위에서 dependency provider를 만들고 어떤 descendant든 바로 줄 수 있도록 한다. 이때 inject키워드를 쓴다.

export default {
provide: {
message: 'hello!'
}
}

provide는 app leve에서 할 수 있다.

import { createApp } from 'vue'
const app = createApp({})
app.provide(/* key */ 'message', /* value */ 'hello!')

아래처럼 inject한다.

export default {
inject: ['message'],
created() {
console.log(this.message) // injected value
}
}

Injection Aliasing / Default Value

  1. component의 inject옵션을 object형식으로 달아주어 inject의 key를 임의로 변경할 수 있다.
  2. inject는 상위에 어딘가에서 provided되었다고 생각하므로, 없으면 runtime에 warning을 낸다.

따라서 default value를 줄 수 있다.

<script>
export default {
inject: {
/* local key */ localMessage: {
from: /* injection key */ 'message',
default: 'default value'
},
user: {
// use a factory function for non-primitive values that are expensive
// to create, or ones that should be unique per component instance.
// ???? 무슨말인지 해석해줄사람..
default: () => ({ name: 'John' })
}
}
}
</script>

 

 

 

 

 

 

참고

https://vuejs.org/guide/components/provide-inject.html#prop-drilling

 

Provide / Inject | Vue.js

 

vuejs.org

 

 

728x90
반응형

'javascript' 카테고리의 다른 글

[javascript] 변경 감지 이벤트 onchange, oninput 차이  (0) 2022.10.12
[javascript] Symbol이란? ES6에서 새로 추가된 타입, javascript enum  (0) 2022.09.23
[javascript] Promise, Async, Await, fetch, axios  (0) 2022.07.06
[JavaScript]ES6, Arrow Function, ES6 Method, Method  (0) 2022.06.20
[javascript] nested object deep copy, 중첩 Object 깊은 복사  (0) 2022.06.09
'javascript' 카테고리의 다른 글
  • [javascript] 변경 감지 이벤트 onchange, oninput 차이
  • [javascript] Symbol이란? ES6에서 새로 추가된 타입, javascript enum
  • [javascript] Promise, Async, Await, fetch, axios
  • [JavaScript]ES6, Arrow Function, ES6 Method, Method
우주유령
우주유령
우주유령
우주
우주유령
전체
오늘
어제
반응형
  • 분류 전체보기 (131)
    • javascript (28)
    • java (26)
    • Web (16)
    • React (7)
    • SQL (2)
    • Spring (20)
    • IntelliJ (6)
    • JSP (1)
    • Notion (1)
    • VScode (8)
    • Vue (3)
    • css (1)
    • tistory (1)
    • jpa (8)
    • 책 (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

최근 글

hELLO · Designed By 정상우.
우주유령
[vue] provide와 inject 알아보기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.