탭 구성 요소에 대한 Vue의 슬롯 적용
5149 단어 vuejavascript
Vaccine Tracker 을 빌드하기 위해 이 프레임워크를 테스트하기로 결정했습니다. React에 대한 배경 지식이 있어 학습이 원활하고 자연스럽습니다.
믿을 수 없을 정도로 다재다능한 요소는 슬롯입니다. 처음부터 나는 그것들이 어떻게 복잡하고 동시에 다양한 레이아웃의 건설에 사용될 수 있는지 궁금했습니다. 예를 들어 탭 구성 요소.
탭 구성 요소 구현
소품으로 표시할 모든 탭의 목록을 수신하는 것으로 충분합니다.
상태에서 활성화된 탭을 추적하는 것으로 충분합니다.
마지막으로 다른 탭을 클릭할 때 트리거되는 메서드가 필요합니다.
<script>
import Vue from 'vue'
export default Vue.extend({
props: {
labels: {
type: Array,
require: true,
},
},
data() {
return {
activeLabel: this.$props.labels[0],
}
},
methods: {
onLabelClick(label) {
this.activeLabel = label
},
},
})
</script>
지금까지 (구문은 제쳐두고) 다른 프레임워크와 다르지 않습니다. 그러나 마법은 템플릿에서 발생합니다.
<template>
<div>
<div v-for="label in labels" :key="label" @click="onLabelClick(label)">
{{ label }}
</div>
<slot :name="activeLabel">Default {{ activeLabel }}</slot>
</div>
</template>
그게 다야. 각 탭을 표시하는 한 번의 반복. 아래는 탭 중 하나를 클릭할 때
name
가 업데이트되는 슬롯입니다.For the purposes of this post I ignore the style. You can get fancy!
탭 구성 요소 사용
이 구성 요소를 사용하려는 모든 위치에서 다음과 같이 하십시오.
<Tabs :labels="['one', 'two', 'three']">
test
<template #one>
<div>Uno</div>
</template>
<template #two>
<div>Due</div>
</template>
<template #three>
<div>Tre</div>
</template>
</Tabs>
다른 템플릿 중에서 활성 탭과 관련된 템플릿만 표시됩니다.
몇 줄의 라인이 어떻게 이렇게 다양한 행동으로 이어질 수 있는지 놀랍습니다.
읽어 주셔서 감사합니다,
Repo 📑
마음에 드시면 연락주세요
🐙 및
Reference
이 문제에 관하여(탭 구성 요소에 대한 Vue의 슬롯 적용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/didof/applying-slots-in-vue-for-a-tabs-component-5642텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)