패스잇
프론트엔드 개발 · 중급

Vue 컴포넌트 간 통신에서 'props'와 'emit'은 기본적인 부모-자식 통신 방식입니다. 이 외에 복잡한 컴포넌트 트리에서 부모-자식 관계가 아닌 컴포넌트 간 효율적인 통신 방법들(예: provide/inject, Pinia/Vuex)을 설명하고, 각 방법의 장단점을 비교해주세요.

힌트 · provide/inject는 깊은 계층의 컴포넌트 간 통신에 적합하며, Pinia/Vuex는 전역 상태 관리에 사용됩니다.

propsemitprovide/injectPinia/Vuex전역 상태 관리

모범답안

네, Vue 컴포넌트 간 통신 방법에 대해 설명드리겠습니다.

'props'와 'emit'은 부모-자식 관계에서 가장 기본적인 통신 방식이지만, 컴포넌트 트리가 복잡해지면 효율성이 떨어질 수 있습니다.

이러한 문제를 해결하기 위해 'provide/inject'와 'Pinia/Vuex' 같은 방법들을 사용할 수 있습니다. 'provide/inject'는 부모 컴포넌트에서 데이터를 제공(provide)하고, 하위 컴포넌트에서 해당 데이터를 주입(inject)받는 방식입니다. 깊은 계층 구조에서 props를 여러 단계 거쳐 전달할 필요 없이 직접 데이터를 공유할 수 있다는 장점이 있지만, 컴포넌트 간의 결합도가 높아지고, 데이터 흐름 추적이 어려워질 수 있다는 단점이 있습니다.

'Pinia/Vuex'는 전역 상태 관리 라이브러리입니다. 여러 컴포넌트에서 공유해야 하는 상태를 중앙 집중식으로 관리하여 컴포넌트 간의 통신을 간소화합니다. 상태 변화를 예측 가능하게 만들고, 디버깅을 용이하게 한다는 장점이 있지만, 규모가 작은 프로젝트에서는 오히려 오버헤드가 될 수 있습니다. 프로젝트 규모와 복잡성을 고려하여 적절한 방법을 선택하는 것이 중요합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Vue.js / Nuxt 면접 질문

← Vue.js / Nuxt 면접 질문 전체 보기