[vue] vue slot

JIOO·2022년 11월 1일

Vue

목록 보기
9/18
post-thumbnail

📖 vue slot 이란?

사용할 컴포넌트 안에 커스텀 할 html을 추가 하고 싶을 때 사용

사용할 컴포넌트 안의 원하는 곳에 slot을 추가


✔ 사용방식

- index.vue

<template>
  <!-- 사용자 지정 텍스트 제공 -->
  <SubmitButton>저장</SubmitButton>
</template>

-submitButton.vue

<template>
  <button type="submit">
	  <slot>
    	슬롯 자리로 저장이 감 
  	</slot>
	</button>
</template>

name이 있는 슬롯

- index.vue

<template>
  <BaseLayout>
    <template #header>
      <h1>다음은 페이지 제목일 수 있습니다.</h1>
    </template>

    <template #default>
      <p>주요 내용에 대한 단락입니다.</p>
      <p>그리고 또 하나.</p>
    </template>

    <template #footer>
      <p>다음은 연락처 정보입니다.</p>
    </template>
  </BaseLayout>
</template>

- Baselayout.vue

<template>
  <div class="container">
    <header>
      <slot name="header"></slot>
    </header>
    
    <main>
      <slot></slot>
    </main>
    
    <footer>
      <slot name="footer"></slot>
    </footer>
  </div>
</template>

슬롯을 사용하는 하위 컴포넌트에 데이터 전송

부모에서 자식으로

- index.vue

<template>
	<MyComponent :data ="data"> 
	</MyComponent>
</template>


- children.vue

<template>
	<div>
     <slot id = data></slot>
    </div>
</template>

props : {
 data : string
}

자식에서 부모로


- index.vue

<template>
	<MyComponent v-slot="slotProps">
  		{{ slotProps.text }} {{ slotProps.count }}
	</MyComponent>
</template>

- MyComponent.vue
<div>
  <slot :text="greetingMessage" :count="1"></slot>
</div>

단 서로의 데이터에 관섭 할 수 없음. 업데이트 불가능

profile
프론트엔드가 좋은 웹쟁이 with Notion (요즘은 노션과 병행 중)

0개의 댓글