v-slot 을 2중으로 가능한가요??
499
작성한 질문수 2
안녕하세요 Vue3 쪽에서 사용 중이긴 한데 v-slot 관련해서 궁금한 점이 있습니다.
childComponent.vue
<div>
<slot name="child"></slot>
</div>
parentsComponent.vue
<children-component>
<template v-slot:child>
...
</template>
<slot name="parent"></slot>
</children-component>
topComponent.vue
<parent-component>
<template v-slot:parent>
...
<template v-slot:child>
...
</template>
</template>
</parent-component>
위와 같이 topComponent에서
parentsComponent.vue의 parent slot을 통해 childComponent.vue의 child slot으로 접근하고 싶은데 위처럼 코드를 작성하면 오류가 발생하더라구요.
topComponent에서 parentsComponent의 슬롯을 통해 childComponent 슬롯으로 접근하려면 어떻게 해야 할까요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
kjkang님의 Vue.js 관련 질문에 대한 답변을 드리겠습니다.
Vue.js에서는 슬롯을 중첩하여 사용하는 것이 가능합니다. v-slot을 사용할 때 중요한 것은 올바른 범위와 상하 구조를 지키는 것입니다. 다중 슬롯에서 특정 슬롯에 접근하려 할 때 상위 컴포넌트에서 하위 컴포넌트의 슬롯을 타겟팅하여 사용할 수 있습니다. 그러나 v-slot을 중첩하여 바로 내부 슬롯을 타겟팅하는 것은 가능하지 않습니다. 각각의 슬롯은 자신이 속한 컴포넌트의 바로 하위 레벨에서만 접근할 수 있습니다.
예시에서 topComponent는 childComponent의 슬롯에 직접 접근하는 것이 아니라, parent-component에 정의된 슬롯을 사용하여 해당 슬롯을 통해 데이터를 전달해야 합니다. 이를 사용하기 위해서는 parent-component에 child-component의 슬롯에 대한 템플릿을 제공하고, topComponent 또한 parent-component의 슬롯을 통해 필요한 데이터를 전달하면 됩니다.
올바른 사용 예는 다음과 같습니다.
childComponent.vue
<div>
<slot name="child"></slot>
</div>
parentsComponent.vue
<children-component>
<template v-slot:child>
<!-- 여기서 TopComponent로부터 어떤 내용을 받는다면 그 내용을 표시함 -->
<slot name="parent"></slot>
</template>
</children-component>
topComponent.vue
<parent-component>
<template v-slot:parent>
<!-- parentsComponent.vue의 child 슬롯에 표시할 내용을 전달합니다. -->
내용...
</template>
</parent-component>
이렇게, 각 컴포넌트는 자신의 슬롯을 통해 필요한 내용을 전달하고, 각각의 슬롯 태그(template) 내부에 또 다른 슬롯을 정의하여 중첩적으로 사용할 수 있습니다. 상위 컴포넌트의 v-slot은 하위 컴포넌트에서 정의한 위치에 내용을 전달하는 역할만 하며, 직접적인 중첩 접근은 불가능합니다.
Vue.js의 공식 문서나 커뮤니티에서 추가적인 정보를 찾아볼 수 있으며, 복잡한 슬롯 구조가 필요하다면 구조를 단순화하거나 다른 방식을 고려해 보는 것도 좋을 것입니다.
개발자 툴에서 Vue가 표시되지 않는 현상.
0
93
2
chrome 확장 devtools 버전 문제
0
81
1
Vue.js not detected가 자꾸 뜹니다
0
84
2
마지막 강의가 안되요
0
57
1
data, computed, watch > Reactivity
0
51
1
f12누르고 개발자도구에 vue 탭이 안생겨요
0
89
1
vue composition api
0
73
1
강의 자료 다운이 될까요?
0
128
1
개발자 도구에서 뷰탭이 안보여요....
0
588
3
프롭스 데이터 질문입니다.
0
113
1
component.html:11 Uncaught ReferenceError: Vue is not defined at component.html:11:20 (anonymous) @ component.html:11
0
141
1
화면이 안떠요,, 이전 이후 강의는 뜨는데..
0
236
6
크롬 확장 프로그램 vue devtools 설치했는데
0
537
2
코드를 수정하고 브라우저의 Vue로 넘어가면 다운이 됩니다.
0
243
1
버튼을 클릭해도 event가 발생하지 않습니다.
0
310
1
vue3 css 경로 표시 문의
1
231
2
개발자도구 vue탭
0
356
1
화면 코드 보기
1
226
2
App.vue 내용 변경했는데 창이 연결할수없대요ㅜㅜ
1
384
2
html/css/js로 작성된 코드를 vue.js로 일부 전환하고자 이 강의를 듣기 시작했습니다.
1
888
2
Vue 개발자 도구에서 다른 기능들이 안보여요!
1
601
2
{{ num }} 이 <app-content> 아래에 들어가 있을때에는 노출이 안됩니다...
1
288
2
뷰 개발자도구 이벤트 타임라인 어느 부분에서 확인가능한건가요
1
401
2
다음 단계 강의는...?
1
387
2





