컴포넌트-기초
component 재사용
컴포넌트를 재사용하기 위해
Mybtn
이라는 컴포넌트를 만들고props
을 통해 다른 컴포넌트에color
를 바꿔줌
- 구조
- App.vue
<template>
<MyBtn />
<MyBtn color="royalblue" />
<MyBtn />
<MyBtn />
</template>
<script>
import MyBtn from '~/components/MyBtn'
export default {
components: {
MyBtn
}
}
</script>
- MyBtn.vue
Type을
String
으로 받았기 때문에,App.vue
에서<MyBtn color="#000" />
부분을 문자로 받아야한다.
<template>
<div
:style="{ backgroundColor: color}"
class="btn">
Apple
</div>
</template>
<script>
export default {
props: {
color: {
type: String,
default: 'gray'
}
}
}
</script>
<style scoped>
.btn {
display: inline-block;
margin: 4px;
padding: 6px 12px;
border-radius: 4px;
background-color: gray;
color: white;
cursor: pointer;
}
</style>
Button, slot
우리가 평소에 사용하던
Button
처럼 안에 내용을 넣을 수 있고
- App.vue
<MyBtn>banana</MyBtn>
<MyBtn :color="color" />
<MyBtn
large
color="royalblue" />
<MyBtn />
</template>
...
- MyBtn.vue
그 내용을
<slot></slot>
으로 내가 출력하고 싶은 위치에 정해줄 수 있다. 그 자리에 content가 대체된다!
즉, 굳이text
라는props
를 제공할 필요가 없다.
<template>
<div
:class="{ large }"
:style="{ backgroundColor: color}"
class="btn">
<slot></slot>
</div>
</template>
...
! 그렇다면, slot 태그는 글자만 들어갈 수 있을까?
정답은 No.
<MyBtn :color="color">
<span style="color: red;">Banana</span>
</MyBtn>
이렇게 <MyBtn></MyBtn>
사이에 들어간 모든 내용이 <slot></slot
의 내용이다. 위 예시에서는 <span style="color: red;">Banana</span>
이 부분이 slot
이라고 할 수 있다.
또한 slot
을 사용하면 우리가 아는 HTML
구조의 button
과 유사하게 사용이 가능하다.
Author And Source
이 문제에 관하여(컴포넌트-기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@onehousesilver/컴포넌트-기초저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)