<!-- App.vue -->
<template>
<BtnComm
class="jude"
style="color:blue">
버튼
</BtnComm>
</template>
<script>
import BtnComm from '~/components/BtnComm'
export default {
components: {
BtnComm
}
}
</script>
<!-- BtnComm.vue -->
<template>
<button
type="button"
class="btn">
<slot></slot>
</button>
</template>
<!-- BtnComm.vue -->
<template>
<button
type="button"
class="btn">
<slot></slot>
</button>
<div>123</div>
</template>
created
라이프 사이클을 통해 속성들을 내려받아 사용할 수 있다.<!-- BtnComm.vue -->
<script>
export default {
created() {
console.log(this.$attrs)
}
}
</script>
this.$attr
을 콘솔에 찍어보면 아래와 같이 내려 받은 속성들을 찾을 수 있다.
<!-- BtnComm.vue -->
<template>
<button
type="button"
class="btn">
<slot></slot>
</button>
<div :class="$attrs.class">
123
</div>
</template>
<!-- BtnComm.vue -->
<template>
<button
type="button"
class="btn">
<slot></slot>
</button>
<div v-bind="$attrs">
123
</div>
</template>
inheritAttrs
값을 false
로 설정하여 속성 상속을 방지할 수 있다.<!-- BtnComm.vue -->
<script>
export default {
inheritAttrs: false
}
</script>
$attrs
를 사용해서 상속 받았는지 컴포넌트를 선언하는 위치에서는 헛갈릴 수 있다.inheritAttrs
속성을 false
값으로 적용해서 암묵적인 속성 상속을 못하게 해놓고, 프로젝트 내에 모든 컴포넌트 속성 상속은 this.$attrs
를 사용한다는 룰을 만들 수 있다.