이번에는 슬롯을 사용하여 vue 컴포넌트로 컨텐츠를 배포하는 단계에 대해 자세히 설명하겠습니다. 슬롯을 사용하여 컨텐츠를 배포하는 vue 컴포넌트의 주의 사항은 무엇입니까?
1. 슬롯이란 무엇입니까
컴포넌트를 사용할 때 다음과 같이 결합해야 하는 경우가 많습니다.
<app> <app-header></app-header> <app-footer></app-footer> </app>
컴포넌트를 조합하여 사용해야 할 때는 상위 컴포넌트의 콘텐츠와 템플릿의 템플릿을 혼합합니다. 슬롯을 사용하는 이 프로세스를 콘텐츠 배포(transclusion)라고 합니다.
두 가지 사항에 유의하세요.
1.
2.
props 전송 데이터, 이벤트 events 및 슬롯 콘텐츠 배포는 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 } });
여기의 stateshowChild는 상위 구성 요소의 데이터에 바인딩됩니다. 하위 구성 요소에 바인딩하려면 다음과 같아야 합니다.
<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는 임시 variable🎜, v-for= ” 항목의 항목 과 마찬가지로 템플릿의 항목과 마찬가지로 하위 구성 요소 슬롯의 데이터 메시지는 다음을 통해 액세스할 수 있습니다. 템플릿의 임시 변수 props. 🎜🎜🎜🎜Vue 컴포넌트에서 슬롯의 사용법을 살펴보겠습니다🎜🎜🎜🎜주로 컴포넌트의 확장성을 높이기 위한 것입니다. 🎜🎜1. 익명 슬롯을 사용하세요🎜🎜🎜🎜🎜2. 슬롯에 이름을 추가하세요🎜<p style="text-align: left;"><img src="https://img.php.cn/upload/article/000/061/021/4f7d9a59dd445bab9093c07a09392ed7-1.png" alt=""></p>
<p style="text-align: left;">슬롯이 있는 컴포넌트에 태그를 추가하지 않으면 슬롯에 아무것도 표시되지 않습니다. </p>
<p>이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! </p>
<p>추천 도서: </p>
<p style="text-align: left;"><a href="http://www.php.cn/js-tutorial-398352.html" target="_blank">vue2.0+boostrap 프로젝트 구축 방법</a><br></p>
<p style="text-align: left;"><a href="http://www.php.cn/js-tutorial-398354.html" target="_blank">webpack 모듈 핫 교체 방법</a><br></p>
위 내용은 Vue 구성 요소를 사용하여 콘텐츠를 배포하기 위해 슬롯을 사용하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!