Vue中的slot使用插槽分發(fā)內(nèi)容的方法
<slot></slot>標(biāo)簽,簡單來說就是占位符,它會(huì)幫你占好位置,等你需要的時(shí)候直接將html傳入,它會(huì)幫你顯示出來。
也有人說:props可以將數(shù)據(jù)從父組件傳入子組件,slot可以將html從父組件傳入子組件。那么如何實(shí)現(xiàn)呢?
單個(gè)插槽:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="vue.min.js"></script> </head> <body> <div id="app"> <h1>我是父組件的標(biāo)題</h1> <my-component> <p>這是一些初始內(nèi)容</p> <p>這是更多的初始內(nèi)容</p> </my-component> </div> <script type="text/javascript"> Vue.component('my-component', { // 有效,因?yàn)槭窃谡_的作用域內(nèi) template: '<div>\ <h2>我是子組件的標(biāo)題</h2>\ <slot>只有在沒有要分發(fā)的內(nèi)容時(shí)才會(huì)顯示。</slot>\ </div>', data: function () { return { } } }); new Vue({ el:'#app', data:{ msg:'你好啊' } }) </script> </body> </html>
組件中的模板中寫入slot標(biāo)簽,在父級(jí)調(diào)用子組件的時(shí)候傳入html即可。
具名插槽:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="vue.min.js"></script> </head> <body> <div id="app"> <my-component> <h1 slot="header">這里可能是一個(gè)頁面標(biāo)題</h1> <p>主要內(nèi)容的一個(gè)段落。</p> <p>另一個(gè)主要段落。</p> <p slot="footer">這里有一些聯(lián)系信息</p> </my-component> </div> <script type="text/javascript"> Vue.component('my-component', { // 有效,因?yàn)槭窃谡_的作用域內(nèi) template: '<div class="container">\ <header>\ <slot name="header"></slot>\ </header>\ <main>\ <slot></slot>\ </main>\ <footer>\ <slot name="footer"></slot>\ </footer>\ </div>', data: function () { return { } } }); new Vue({ el:'#app', data:{ msg:'你好啊' } }) </script> </body> </html>
具名插槽,顧名思義當(dāng)有多個(gè)slot標(biāo)簽時(shí),你需要給他們起個(gè)自己的名字,在父組件調(diào)用時(shí)需要slot="內(nèi)部的對(duì)應(yīng)名字",當(dāng)存在沒有命名的slot標(biāo)簽時(shí),父級(jí)組件傳入的默認(rèn)html代碼將全部輸出在無名的slot標(biāo)簽中。
作用域插槽
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="vue.min.js"></script> </head> <body> <div id="app"> <!-- 在父級(jí)中,具有特殊特性 slot-scope 的 <template> 元素必須存在,表示它是作用域插槽的模板。slot-scope 的值將被用作一個(gè)臨時(shí)變量名,此變量接收從子組件傳遞過來的 prop 對(duì)象: --> <child> <template scope="props"> <span>hello from parent</span><br> <span>{{ props.text }}</span> </template> </child> </div> <script type="text/javascript"> // 在子組件中,只需將數(shù)據(jù)傳遞到插槽,就像你將 prop 傳遞給組件一樣: Vue.component('child',{ template:'<ul>' + '<slot text="hello from child"></slot>' + '</ul>', data:function(){ return { } }, }); new Vue({ el:'#app', data:{ msg:'你好啊' } }) </script> </body> </html>
作用域插槽是一種特殊類型的插槽,用作一個(gè) (能被傳遞數(shù)據(jù)的) 可重用模板,來代替已經(jīng)渲染好的元素。
其實(shí)就是相當(dāng)于,在父組件中可以獲取到子組件傳遞出來的props對(duì)象,從而渲染到父組件上。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解如何實(shí)現(xiàn)一個(gè)簡單的 vuex
本篇文章主要介紹了如何實(shí)現(xiàn)一個(gè)簡單的 vuex,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02Vue-Router2.X多種路由實(shí)現(xiàn)方式總結(jié)
下面小編就為大家分享一篇Vue-Router2.X多種路由實(shí)現(xiàn)方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02使用Bootstrap + Vue.js實(shí)現(xiàn)表格的動(dòng)態(tài)展示、新增和刪除功能
這篇文章主要介紹了使用Bootstrap + Vue.js實(shí)現(xiàn)表格的動(dòng)態(tài)展示、新增和刪除功能,需要的朋友可以參考下2017-11-11Vue中使用Element UI的Table組件實(shí)現(xiàn)嵌套表格功能
這篇文章主要介紹了Vue中使用Element UI的Table組件實(shí)現(xiàn)嵌套表格功能,演示如何在Vue中使用Element UI的Table組件實(shí)現(xiàn)嵌套表格,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01vue使用Office?Web實(shí)現(xiàn)線上文件預(yù)覽
這篇文章主要為大家介紹了vue使用微軟的開發(fā)接口Office?Web,實(shí)現(xiàn)線上文件預(yù)覽,預(yù)覽word,excel,pptx,pdf文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07