溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Vue中的插槽是什么

發(fā)布時(shí)間:2021-01-27 13:41:41 來(lái)源:億速云 閱讀:151 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了Vue中的插槽是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Vue中的插槽是什么

Vue插槽,是學(xué)習(xí)vue中必不可少的一節(jié),當(dāng)初剛接觸vue的時(shí)候,對(duì)這些掌握的一知半解,特別是作用域插槽一直沒(méi)明白。

后面越來(lái)越發(fā)現(xiàn)插槽的好用。

分享一下插槽的一些知識(shí)吧。

一、插槽內(nèi)容

一句話(huà):插槽內(nèi)可以是任意內(nèi)容。

先看一下下面的代碼:聲明一個(gè)child-component組件,

如果現(xiàn)在我想在<child-component></child-component>內(nèi)放置一些內(nèi)容,結(jié)果會(huì)是怎樣?

<div id="app">
    <child-component></child-component>

</div>
<script>
    Vue.component('child-component',{
        template:`
            <div>Hello,World!</div>
        `
    })
    let vm = new Vue({
        el:'#app',
        data:{

        }
    })
</script>
<child-component>你好</child-component>

輸出內(nèi)容還是在組件中的內(nèi)容,在 <child-component>內(nèi)寫(xiě)的內(nèi)容沒(méi)起作用。

Vue中的插槽是什么

我們現(xiàn)在給組件增加一個(gè)<slot></slot>插槽

我們?cè)?lt;child-component></child-component>內(nèi)寫(xiě)的"你好"起作用了?。。?/p>

Vue.component('child-component',{
        template:`
            <div>
            Hello,World!
            <slot></slot>
            </div>
        `
    })

Vue中的插槽是什么

到現(xiàn)在,我們知道了什么是插槽:

插槽就是Vue實(shí)現(xiàn)的一套內(nèi)容分發(fā)的API,將<slot></slot>元素作為承載分發(fā)內(nèi)容的出口。

這句話(huà)的意思就是,沒(méi)有插槽的情況下在組件標(biāo)簽內(nèi)些一些內(nèi)容是不起任何作用的,當(dāng)我在組件中聲明了slot元素后,在組件元素內(nèi)寫(xiě)的內(nèi)容就會(huì)跑到它這里了!

二、具名插槽

具名插槽,就是給這個(gè)插槽起個(gè)名字

在組件中,我給插槽起個(gè)名字,一個(gè)名字叫"girl",一個(gè)名字叫"boy",還有一個(gè)不起名字。

然后再<child-component></child-component>內(nèi),slot屬性對(duì)應(yīng)的內(nèi)容都會(huì)和組件中name一一對(duì)應(yīng)。

而沒(méi)有名字的,就是默認(rèn)插槽??!

<div id="app">
    <child-component>
        <template slot="girl">
            漂亮、美麗、購(gòu)物、逛街
        </template>
        <template slot="boy">
            帥氣、才實(shí)
        </template>
        <div>
            我是一類(lèi)人,
            我是默認(rèn)的插槽
        </div>
    </child-component>
</div>
<script>
    Vue.component('child-component',{
        template:`
            <div>
            <h5>這個(gè)世界不僅有男人和女人</h5>

            <slot name="girl"></slot>

            <div style="height:1px;background-color:red;"></div>

            <slot name="boy"></slot>

            <div style="height:1px;background-color:red;"></div>

            <slot></slot>
            </div>
        `
    })
    let vm = new Vue({
        el:'#app',
        data:{

        }
    })
</script>

3、作用域插槽

之前一直沒(méi)搞懂作用域插槽到底是什么?。。?/p>

說(shuō)白了就是我在組件上的屬性,可以在組件元素內(nèi)使用!

先看一個(gè)最簡(jiǎn)單的例子!!

我們給<slot></slot>元素上定義一個(gè)屬性say(隨便定義的?。?,接下來(lái)在使用組件child,然后在template元素上添加屬性slot-scope!!隨便起個(gè)名字a

我們把a(bǔ)打印一下發(fā)現(xiàn)是 {"say" : "你好"},也就是slot上面的屬性和值組成的鍵值對(duì)!?。?/p>

這就是作用域插槽!

我可以把組件上的屬性/值,在組件元素上使用?。?/p>

<div id="app">
    <child>
        <template slot-scope="a">
      <!-- {"say":"你好"} -->

            {{a}}
        </template>
    </child>
</div>
<script>
    Vue.component('child',{
        template:`
            <div>
                <slot say="你好"></slot>
            </div>
        `
    })

    let vm = new Vue({
        el:'#app',
        data:{

        }
    })
</script>

再看一下下面的例子:

<div id="app">
    <child :lists="nameList">
        <template slot-scope="a">
            {{a}}
        </template>
    </child>
</div>
<script>
    Vue.component('child',{
        props:['lists'],
        template:`
            <div>
                <ul>
                    <li v-for="list in lists">
                        <slot :bbbbb="list"></slot>
                    </li>
                </ul>
            </div>
        `
    })

    let vm = new Vue({
        el:'#app',
        data:{
            nameList:[
            {id:1,name:'孫悟空'},
            {id:2,name:'豬八戒'},
            {id:3,name:'沙和尚'},
            {id:4,name:'唐僧'},
            {id:5,name:'小白龍'},
            ]
        }
    })
</script>

看一下輸出結(jié)果

Vue中的插槽是什么

以上就是了解一下Vue中的插槽的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Vue中的插槽是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI