插槽

定義:定義子組件的時候,在子組件內(nèi)部刨了一個坑,父組件想辦法往坑里填內(nèi)容;
1.單個插槽

1.1定義插槽:在子組件作用域中,使用 <slot></slot> 定義一個插槽;
1.2.使用插槽:在父作用域中使用帶有插槽的組件時,組件內(nèi)容區(qū)域中的內(nèi)容,會插入到插槽中顯示;
父組件給子組件的插槽內(nèi)填內(nèi)容

        <body>
        <div id="app">
        <!-- 這是父組件的作用域 -->
        <my-com1>
        <!-- 這是父組件第一次在插槽天的內(nèi)容 -->
        12345 
        </my-com1>
        <hr>
        <my-com1>
        <!-- 這是父組件第二次在插槽天的內(nèi)容 -->
        復方草珊瑚
        </my-com1>
        <hr>
        <my-com1>
        <!-- 這是父組件第三次在插槽天的內(nèi)容 -->
        <h3>汗滴禾下土</h3>
        <h3>汗滴禾下土</h3>
        </my-com1>
        </div>
        <script>
        Vue.component('my-com1', {
        template: `<div>
        鋤禾日當午 
        <slot></slot> 
        </div>`
        })
        // 創(chuàng)建 Vue 實例,得到 ViewModel
        var vm = new Vue({
        el: '#app',
        data: {},
        methods: {}
        });
        </script>
        
    打印結(jié)果

2.具名插槽
2.1.如果在一個組件中,定義了多個slot插槽,則必須為每個插槽起一個name名稱
2.2.如果要往插槽里面填充內(nèi)容,但是沒有提供具體的插槽名稱,此時,內(nèi)容會默認填充到?jīng)]有name屬性的slot中,如果slot不帶name屬性,則把它稱為默認插槽

        <div id="app">
        <!-- 注意:如果要往插槽里面填充內(nèi)容,但是沒有提供具體的插槽名稱,此時,內(nèi)容會默認 填充到 沒有 name 屬性的 slot 中 -->
        <my-com1>
        <div slot="cc2">
        <p>12345</p>
        <p>12345</p>
        </div>
        <h4>汗滴禾下土</h4>
        </my-com1>
        </div>
        <script>
        // 注意;如果 在 一個組件中,定義了多個 slot 插槽,則,必須為每個插槽 起一個 name 名稱
        Vue.component('my-com1', {
        template: `<div>
        鋤禾日當午
        <!--第一個插槽-->
        <!--規(guī)定:如果 slot 不帶 name 屬性,則 把它稱為 默認插槽-->
        <slot></slot>
        <p>~~~~~~~~~~</p>
        <!--第二個插槽-->
        <slot name="cc2"></slot>
        </div>`
        })od
        // 創(chuàng)建 Vue 實例,得到 ViewMel
        var vm = new Vue({
        el: '#app',
        data: {},
        methods: {}
        });
        </script>

3.作用域插槽
3.1.作用域插槽,就是子組件在定義slot標簽的時候,提供了一些插槽的數(shù)據(jù),將來哪些內(nèi)容放到slot標簽插槽中,則那些內(nèi)容就可以使用<slot>為你提供的數(shù)據(jù)
2.插槽通過屬性節(jié)點,把一些數(shù)據(jù)返回給父作用域,父作用域就可以通過slot-scope來接收,把接收的數(shù)據(jù)再進行使用

    <body>
    <div id="app">
    <!-- 注意:作用域插槽,就是 子組件在定義 slot 插槽的時候,提供了一些 插槽的數(shù)據(jù); -->
    <!-- 將來,哪些內(nèi)容 要放到 <slot> 標簽內(nèi),則,那些內(nèi)容,就可以使用 <slot> 為你提供的數(shù)據(jù) -->
    <my-com1>
    <!-- scope 代表作用域的意思 -->
    <h3 slot-scope="scope">數(shù)據(jù) --- {{scope}} -- {{scope.sinfo.name}}</h3>
    </my-com1>
    </div>
    <script>
    Vue.component('my-com1', {
    template: `<div>
    <p>*** 作用域插槽的演示</p>
    <slot msg="this is a msg" :sinfo="info"></slot>
    </div>`,
    data() {
    return {
    info: {
    name: 'zs',
    age: 22,
    address: '北京'
    }
    }
    }
    })
    // 創(chuàng)建 Vue 實例,得到 ViewModel
    var vm = new Vue({
    el: '#app',
    data: {},
    methods: {}
    });

</script>](https://upload-images.jianshu.io/upload_images/13336975-829ce5dad1004a05.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • By Leaf 在學習的過程中遇到了Vue的slot元素,開始不知道也不了解它的用途、用法,即然遇到了不懂的知識點...
    HYC_閱讀 5,192評論 7 42
  • 編譯作用域 在vue組件中作用域簡單的說就是: 父組件模板的內(nèi)容在父組件的作用域內(nèi)編譯,子組件模板的內(nèi)容在子組件的...
    羊烊羴閱讀 1,668評論 0 1
  • 關于插槽自己的理解 我認為的插槽的含義: 簡單的說,插槽就是可以讓開發(fā)者自定義地往子組件中放置代碼片段而開發(fā)...
    LeoMelody閱讀 14,709評論 2 17
  • Test Vue.js Slots in Jest 測試Vue.js中的Slots插槽 Learn how to ...
    Revontulet閱讀 3,105評論 0 1
  • 一、概念解析 插槽slot:插槽有點像組件中的一個占位符,當別的組件使用這個組件的時候,在這一對標簽中又寫了其他內(nèi)...
    klmhly閱讀 607評論 0 0

友情鏈接更多精彩內(nèi)容