프론트엔드 개발 · 중급
Vue 3 Composition API에서 'ref'와 'reactive'는 반응형 데이터를 생성하는 데 사용됩니다. 이 두 함수의 주요 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 더 적절한지 구체적인 예시와 함께 설명해주세요.
힌트 · ref는 원시 값과 객체 모두를 래핑하며, .value로 접근합니다. reactive는 객체에만 사용되며 프록시로 동작하고 .value 없이 직접 접근합니다.
원시값객체반응성 추적깊은 반응성템플릿 자동 언래핑
모범답안
네, Vue 3 Composition API에서 ref와 reactive는 모두 반응형 데이터를 만드는 데 사용되지만, 몇 가지 중요한 차이점이 있습니다.
가장 큰 차이점은 ref는 원시 타입 값(숫자, 문자열, 불리언 등)과 객체 모두를 감쌀 수 있다는 점입니다. ref로 생성된 반응형 데이터에 접근하거나 값을 변경하려면 .value를 사용해야 합니다. 반면, reactive는 객체에만 사용 가능하며, 객체의 속성에 직접 접근하여 값을 변경할 수 있습니다. reactive는 객체를 프록시로 감싸 깊은 반응성을 제공합니다.
어떤 것을 사용할지는 데이터의 형태와 사용 방식에 따라 결정됩니다. 예를 들어, 단순한 숫자나 문자열 값을 반응형으로 관리해야 한다면 ref를 사용하는 것이 적절합니다. 컴포넌트의 카운터를 예로 들 수 있습니다. 반면, 여러 속성을 가진 객체의 반응성을 관리해야 한다면 reactive를 사용하는 것이 더 편리합니다. 사용자 정보 객체와 같이 여러 속성을 한 번에 관리해야 할 때 유용합니다.
템플릿에서는 ref로 생성된 값은 자동으로 언래핑되므로 .value 없이 직접 사용할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Vue.js / Nuxt 면접 질문
- Vue.js에서 배열 데이터를 기반으로 여러 개의 요소를 반복적으로 렌더링할 때 `v-for` 디렉티브를 어떻게 사용하는지 설명해 주세요. 이때 `key` 속성의 중요성도 함께 언급해 주세요.
- Vue.js에서 사용자 인터랙션(클릭, 입력 등)을 처리하기 위해 `v-on` 디렉티브를 어떻게 사용하는지 설명해 주세요. 이벤트 수식어(event modifiers)의 역할도 함께 설명해 주세요.
- Vue.js에서 컴포넌트 기반 개발의 이점은 무엇이며, 하나의 컴포넌트는 일반적으로 어떤 구조(template, script, style)로 이루어져 있는지 설명해 주세요.
- Vue 컴포넌트에서 'computed' 속성과 'watch' 옵션(또는 watch effect)은 모두 반응형 데이터의 변화에 따라 특정 로직을 수행할 수 있습니다. 이 둘의 주요 차이점을 설명하고, 각각 어떤 상황에 더 적합한지 실무 예시를 들어 설명해주세요.
- Vue 컴포넌트 간 통신에서 'props'와 'emit'은 기본적인 부모-자식 통신 방식입니다. 이 외에 복잡한 컴포넌트 트리에서 부모-자식 관계가 아닌 컴포넌트 간 효율적인 통신 방법들(예: provide/inject, Pinia/Vuex)을 설명하고, 각 방법의 장단점을 비교해주세요.
- Vue Router의 내비게이션 가드(Navigation Guards)는 무엇이며, 어떤 종류(전역, 라우트별, 컴포넌트 내)가 있고 각각 어떤 시점에 호출되는지 설명하고 실제 애플리케이션에서 활용 사례를 들어주세요.