inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"

ESLint, Prettier

이중 슬롯에서 props 처리

해결된 질문

85

Amy kim

작성한 질문수 4

0

안녕하세요!

UI 라이브러리를 이용해서 공통 컴포넌트를 개발하고 있습니다.

UI 라이브러리 컴포넌트 중에 slot이 있는 경우에는,

아래와 같이 이중 slot을 적용했습니다.

제가 만든 컴포넌트가 commonComponent이고,

그 안에서 라이브러리에서 제공하는 ui-component를 사용하는 경우입니다.

 

*commonComponent.vue

<ui-component>

<template #uiSlot="v">

{{ v }} // Boolean

<slot name="common" v-bind="v">

</slot>

</template >

</ui-component>

 

그럼 실제 화면 개발 시에는,

아래와 같이 전달을 하게 되는데...

v 값이 Boolean으로 들어와야 하는데 Object로 들어옵니다.

 

<common-component>

<template #common="v>

{{ v }} // Object

</template>

</common-component>

 

콘솔을 찍어보면

#uiSlot="v" -> 여기는 Boolean인데,

#common="v -> 여기서는 Object로 변경됩니다.

 

이중 또는 중첩된 Slot에서 props를 전달할 때, 어떻게 해야 할 지 모르겠어서 질문 드립니다 ㅜㅜ

vue.js

답변 1

0

짐코딩

아래내용을 참고해 보시겠어요?

Vue에서 이중 슬롯 사용시 props가 Object로 변환되는 문제는 이렇게 해결할 수 있습니다:

<!-- commonComponent.vue -->

<ui-component>
  <template #uiSlot="slotProps">
    <slot name="common" :value="slotProps"></slot>
  </template>
</ui-component>
<!-- 사용시 -->
<common-component>
  <template #common="{ value }">
    {{ value }} <!-- Boolean 값 유지됨 -->
  </template>
</common-component>

핵심은 v-bind="v" 대신 명확한 속성명(:value)을 사용하는 것입니다.

0

Amy kim

선생님, 답변 감사합니다!

덕분에 문제가 잘 해결되었어요.

그런데 ㅜㅜ 이중 slot일 때 v-if로 2개의 컴포넌트를 전달하면 true인 컴포넌트 하나만 전달됩니다. 이것도 해결 방법을 여쭤보고 싶습니다.

 

<template #iconRender="v">
        <EyeTwoTone v-if="v"></EyeTwoTone> <!-- 이것만 인식 -->
        <EyeInvisibleOutlined v-else></EyeInvisibleOutlined>
</template>

npm init vue@3.1.9

0

39

2

크롭 웹스토어 vue devtools 설치 관련

0

40

1

snippets 작성하는 부분 설명이 있었나요?

0

48

2

computed 의 set 함수를 통해 const 변수에 값을 담는 부분

0

52

2

소스 공유 어디서 해야하는지 궁금합니다

0

60

2

component 등록과 사용

0

58

2

강의교안

0

56

2

eslint 룰 관련 질문이 있습니다.

0

64

2

npm init -y 명령어 실행에 관한 질문

0

154

2

volar 가 마켓플레이스에 검색되지 않아 vue(official)을 설치했습니다.

0

168

2

깊은 감시자 질문

0

88

2

정리된 내용

0

154

2

화면이 왜 이렇게 뜨는걸까요?

0

186

2

왜 다르게 뜰까요..?ㅠㅠ

0

155

2

npm init vue , npm create vue@latest 명령 오류

0

294

2

강의를 듣다보니 궁금한 점 질문드립니다.

0

141

2

watch강의 질문

0

153

1

강의 듣다가 질문드립니다.

0

119

1

이벤트 처리 부분 강의 실습

0

140

2

v-pre는 설명이 없나요?

0

152

2

AppCard.vue 만들다 말고 오류가 갑자기 엄청 뜹니다

0

146

1

개발자도구 Vue 탭 관련 문의

0

240

2

강의를 인텔리제이로 수업따라가도 되져?

0

178

2

API 사용시 자동으로 import하는 기능은 어떤것을 설치해야 하나요?

3

279

2