728x90
Provide & Inject
일반적으로 부모->자식 컴포넌트로 데이터를 전달할 때는 props
사용
이렇게 정보를 전달하면 계층 구조를 따라 연속적으로 속성을 전달해야 하는 문제가 있음 (prop drilling)

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

사용 예시
- 조상(부모) 컴포넌트: App
- 부모(자식) 컴포넌트: SongList
- 자식(자손) 컴포넌트: SongListItem

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


- App 내에서
provide()
함수를 사용해 icons 속성을 가진 객체를 애플리케이션 컨텍스트에 제공(≒ 공용 data로 만듦) - App에서 provide 된 값을 이용하기 위해
inject 옵션
에서 icons 등록
주의 사항
provide로 제공되는 객체는 기본적으로 반응성(Reactivity)
제공 X
즉, 공용 데이터를 변경하더라도 화면이 갱신되지 않음
반응성을 갖도록 하려면 Composition API가 지원하는 ref, reactive, computed 같은 API를 사용
일반적으로 Provide/Inject
기능에 반응성을 제공하는 것은 추천 X
읽기 전용으로 사용할 때만 적용하도록....
왜 ❓
공용 자원이기 때문에, 자식 중 한 놈이 데이터를 자주 변경하면 변경 사항을 추척하기가 어려움
728x90