[컴포넌트 심화-4] Provide & Inject

2025. 3. 28. 16:23·Frontend/Vue 3
728x90

Provide & Inject

일반적으로 부모->자식 컴포넌트로 데이터를 전달할 때는 `props` 사용

이렇게 정보를 전달하면 계층 구조를 따라 연속적으로 속성을 전달해야 하는 문제가 있음 (prop drilling)

props drilling

`provide & inject`를 이용하여 이러한 문제를 해결함

공용 데이터를 부모 컴포넌트에서 제공(proivde)하여, 해당 데이터가 필요한 하위 컴포넌트에서 주입(inject) 하여 사용

provide & inject


사용 예시

  • 조상(부모) 컴포넌트: App
  • 부모(자식) 컴포넌트: SongList
  • 자식(자손) 컴포넌트: SongListItem

예제 로직

App 에서 제공하는 icons 데이터를 `공용데이터`로 만들어 SongListItem에서 사용하도록 함

왼쪽 App.vue / 오른쪽 : SongListItem

  1. App 내에서 `provide()` 함수를 사용해 icons 속성을 가진 객체를 애플리케이션 컨텍스트에 제공(≒ 공용 data로 만듦)
  2. App에서 provide 된 값을 이용하기 위해 `inject 옵션`에서 icons 등록

주의 사항

provide로 제공되는 객체는 기본적으로 `반응성(Reactivity)` 제공 X

즉, 공용 데이터를 변경하더라도 화면이 갱신되지 않음

반응성을 갖도록 하려면 Composition API가 지원하는 ref, reactive, computed 같은 API를 사용

일반적으로 `Provide/Inject` 기능에 반응성을 제공하는 것은 추천 X

읽기 전용으로 사용할 때만 적용하도록....

왜 ❓
공용 자원이기 때문에, 자식 중 한 놈이 데이터를 자주 변경하면 변경 사항을 추척하기가 어려움
728x90
'Frontend/Vue 3' 카테고리의 다른 글
  • Composition API
  • [컴포넌트 심화-5] 텔레포트, 동적 컴포넌트 &비동기 컴포넌트
  • [컴포넌트 심화-3] 컴포넌트에서의 v-model 디렉티브
  • [컴포넌트 심화-2] Slot
0woy
0woy
Algorithm, CS, Web 등 배운 내용을 기록합니다.
  • 0woy
    0woy dev
    0woy
  • 전체
    오늘
    어제
  • 🌐 LANGUAGE
    • 분류 전체보기 (77) N
      • Backend (21) N
        • JAVA (7)
        • DB (11)
        • Spring (1)
        • Spring Security (2) N
      • Computer Science (19)
        • 네트워크 (9)
        • 운영체제 (5)
        • 보안 (4)
      • Frontend (15)
        • HTML5 (1)
        • CSS (1)
        • JS (4)
        • Vue 3 (9)
      • PS (16)
        • LeetCode (2)
        • Baekjoon (1)
        • Programmers (1)
        • 알고리즘 (12)
      • Dev Trivia (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    대칭키
    leetcode
    select
    set
    트리
    PreparedStatement
    공개키
    Vue3
    BFS
    function
    dfs
    tcp
    https
    Spring
    CA
    Filter
    javascript
    Graph
    JDBC
    속성
    security
    java
    shortestpath
    Props
    가용성
    비밀키
    JS
    그래프
    DP
    RDB
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
0woy
[컴포넌트 심화-4] Provide & Inject
상단으로

티스토리툴바