이번에는 vue+슬롯 배포 콘텐츠를 가져왔습니다. vue+슬롯 배포 콘텐츠의 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.
1. 슬롯이란 무엇입니까
컴포넌트를 사용할 때 다음과 같이 결합해야 하는 경우가 많습니다.
<app> <app-header></app-header> <app-footer></app-footer> </app>
컴포넌트를 조합하여 사용해야 할 때는 상위 컴포넌트의 콘텐츠와 템플릿의 템플릿을 혼합합니다. 슬롯을 사용하는 이 프로세스를 콘텐츠 배포(transclusion)라고 합니다.
두 가지 사항에 유의하세요.
1.
2.
Props 전달 데이터, 이벤트 트리거 이벤트 및 슬롯 콘텐츠 배포는 Vue 구성 요소의 세 가지 API 소스를 구성합니다. 구성 요소가 아무리 복잡해도 이 세 부분으로 구성됩니다.
2. 범위
<child-component> {{ message }} </child-component>
여기에 있는 메시지는 슬롯이지만 구성 요소의 데이터가 아닌 상위 구성 요소의 데이터에 바인딩됩니다.
상위 구성 요소 템플릿의 콘텐츠는 상위 구성 요소 범위에서 컴파일되고 하위 구성 요소 템플릿의 콘텐츠는 하위 구성 요소 범위에서 컴파일됩니다. 예:
<p id="app15"> <child-component v-show="showChild"></child-component> </p> Vue.component('child-component',{ template: '<p>子组件</p>' }); var app15 = new Vue({ el: '#app15', data: { showChild: true } });
여기서 showChild 상태는 상위 구성 요소의 데이터에 바인딩되어 있습니다. 이를 하위 구성 요소에 바인딩하려면 다음과 같아야 합니다.
<p id="app15"> <child-component></child-component> </p> Vue.component('child-component',{ template: '<p v-show="showChild">子组件</p>', data: function(){ return { showChild: true } } });
따라서 슬롯별로 배포되는 콘텐츠의 범위는 다음과 같습니다. 상위 구성 요소.
3. 슬롯 사용
3.1 단일 슬롯
이 하위 구성 요소 템플릿에 대한 슬롯(슬롯)을 열려면 하위 구성 요소의 특수 요소를 사용하세요. 하위 구성 요소 태그 내에 삽입된 콘텐츠는 하위 구성 요소의
<p id="app16"> <my-component16> <p>分发的内容</p> <p>更多分发的内容</p> </my-component16> </p> Vue.component('my-component16',{ template: '<p>' + '<slot><p>如果父组件没有插入内容,我将作为默认出现<</p></slot>' + //预留的slot插槽 '</p>' }); var app16 = new Vue({ el: '#app16' });
렌더링 결과는 다음과 같습니다.
<p id=”app16”> <p> <p>分发的内容<p> <p>更多分发的内容<p> </p> </p>
는 기본 콘텐츠로 사용됩니다. 상위 구성 요소에서 사용됩니다. 이 기본 텍스트는 슬롯이 기록되면 전체 3.2具名slot 给<slot> 元素指定一个name 后可以分发多个内容,具名Slot 可以与单个slot 共存。 渲染结果为: 子组件内声明了3 个<s lot>元素,其中在<p class=” main >内的<slot> 没有使用name 特性,它将作为默认slot 出现,父组件没有使用slot 特性的元素与内容都将出现在这里。 如果没有指定默认的匿名slot ,父组件内多余的内容片段都将被抛弃。 四、作用域插槽 作用域插槽是一种特殊的slot ,使用一个可以复用的模板替换己渲染元素。 看一个例子: 观察子组件的模板,在 父组件中使用了<template>元素,而且拥有一个 3.2 Named Slot 하위 클래스는 3개의 범위 슬롯은 재사용 가능한 템플릿을 사용하여 렌더링된 요소를 대체하는 특수 슬롯입니다. 예를 살펴보세요. child-comComponent
의 템플릿에 정의되어 있으며 child-component
的模板内定义了一个<slot>元素,并且用一个<p>作为默认的内容,在父组件没有使用slot 时,会渲染这段默认的文本;如果写入了slot, 那就会替换整个<slot> 。 <p id="app17">
<my-component17>
<h3 slot="header">标题</h3>
<p>正文内容</p>
<p>更多正文内容</p>
<h3 slot="footer">底部信息</h3>
</my-component17>
</p>
Vue.component('my-component17',{
template: '<p class="container">' +
'<p class="header">' +
'<slot name="header"></slot>' +
'</p>' +
'<p class="main">' +
'<slot></slot>' +
'</p>'+
'<p class="footer">' +
'<slot name="footer"></slot>' +
'</p>'+
'</p>'
});
var app17 = new Vue({
el: '#app17'
});
<p id="app17">
<p class="container">
<p class="header">
<h3>标题</h3></p>
<p class="main">
<p>正文内容</p>
<p>更多正文内容</p>
</p>
<p class="footer">
<h3>底部信息</h3>
</p>
</p>
</p>
<p id="app18">
<my-component18>
<template scope="props">
<p>来自父组件的内容</p>
<p>{{props.msg}}</p>
</template>
</my-component18>
</p>
Vue.component('my-component18',{
template: '<p class="container"><slot msg="来自子组件的内容"></slot></p>'
});
var app18 = new Vue({
el: '#app18'
});
scope=”props ”
的特性,这里的props只是一个临时变量,就像v-for= ” item in items
scope="props"
기능을 가지고 있습니다. 여기서 props는 v-for=" 항목의 항목과 마찬가지로 임시 변수입니다. /code>. 하위 구성 요소 슬롯의 데이터 메시지는 임시 변수 props를 통해 템플릿에서 액세스할 수 있습니다. 🎜🎜🎜🎜Vue 컴포넌트에서 슬롯의 사용법을 살펴보겠습니다🎜🎜🎜🎜주로 컴포넌트의 확장성을 높이기 위한 것입니다. 🎜🎜1. 익명 슬롯 사용🎜🎜🎜🎜🎜2. 슬롯에 이름을 추가하세요🎜🎜🎜🎜🎜 슬롯이 있는 구성 요소에 태그를 추가하지 않으면 슬롯에 아무것도 표시되지 않습니다. 🎜<p>이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! </p>
<p>추천 도서: </p>
<p><a href="http://www.php.cn/js-tutorial-402258.html" target="_blank">케이스에 vue2.0+boostrap 사용</a><br></p>
<p><a href="http://www.php.cn/js-tutorial-402236.html" target="_blank">사용자 확인을 위한 노드+토큰</a><br></p>
위 내용은 vue+slot은 콘텐츠를 배포합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!