真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Vue中的插槽、內(nèi)容分發(fā)、具名插槽應(yīng)用實(shí)例分析

今天小編給大家分享一下Vue中的插槽、內(nèi)容分發(fā)、具名插槽應(yīng)用實(shí)例分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

創(chuàng)新互聯(lián)長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為博野企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),博野網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

插槽 Slots簡(jiǎn)介

Vue中組件的數(shù)據(jù)可以通過props進(jìn)行傳遞,或者通過事件的方式進(jìn)行獲取傳遞,但當(dāng)需要接收模板內(nèi)容(任意合法的模板內(nèi)容,代碼片段、Vue組件)時(shí),就需要使用插槽來實(shí)現(xiàn)了。當(dāng)然也可以通過函數(shù)式編程間接實(shí)現(xiàn)。

Vue中的插槽、內(nèi)容分發(fā)、具名插槽應(yīng)用實(shí)例分析

  • 可以將插槽理解為js中的函數(shù)進(jìn)行編譯

// 父元素傳入插槽內(nèi)容
FancyButton('Click me!')

// FancyButton 在自己的模板中渲染插槽內(nèi)容
function FancyButton(slotContent) {
    return `
      ${slotContent}
    `
}

  • 最好的封裝方式是將共性抽取到組件中,將不同點(diǎn)暴露為插槽 - 抽取共性,保留不同

  • 父組件模板的所有東西都會(huì)在父組件作用域中編譯,子組件模板的所有東西都會(huì)在子組件作用域內(nèi)編譯 - 編譯作用域

slot-scope淺析

常規(guī)的slot可以用于自定義組件的模板,但只是限制于固定的模板,無法自定義內(nèi)部的具體的某一項(xiàng),即常規(guī)的slot無法實(shí)現(xiàn)對(duì)組件循環(huán)體的每一項(xiàng)進(jìn)行不同的內(nèi)容分發(fā),此時(shí)可以通過slot-scope進(jìn)行實(shí)現(xiàn),本質(zhì)上和slot一樣,不同點(diǎn)在于可以進(jìn)行參數(shù)傳遞

//普通的組件定義

        
        {{ book.name }}
        



//slot-scope組件定義

        
            
                
                {{ book.name }}
            
        


//父組件使用

    
        限時(shí)優(yōu)惠
        {{ slotProps.book.name }}
    

使用slot-scope時(shí),當(dāng)父組件使用該API,對(duì)應(yīng)的插槽會(huì)替換模板中的slot進(jìn)行展示

常用API淺析
具名插槽

在組件中定義多個(gè)插槽出口可以兼容多個(gè)不同需求的兼容性,使得多個(gè)插槽內(nèi)容傳入到各自的插槽出口中;當(dāng)插槽中配置了name屬性時(shí),此插槽就被稱為具名插槽(named slots),沒有提供name的插槽會(huì)隱式命名為「default」

Vue中的插槽、內(nèi)容分發(fā)、具名插槽應(yīng)用實(shí)例分析

  • v-slot 可以簡(jiǎn)寫為#,其值對(duì)應(yīng)于插槽中的name對(duì)應(yīng)的值;

  • 當(dāng)在一個(gè)組件中同時(shí)存在默認(rèn)插槽和具名插槽時(shí),所有位于頂級(jí)的非template節(jié)點(diǎn)都被隱式的視為默認(rèn)插槽的內(nèi)容,因此可以省略默認(rèn)插槽的template節(jié)點(diǎn)標(biāo)簽;


    
    
    
        

A paragraph for the main content.


        

And another one.


    
    
        

Here's some contact info


    

作用域插槽

普通的插槽,是無法獲取其他作用域下的數(shù)據(jù)的,即父組件模板中的表達(dá)式只能訪問父組件的作用域;子組件模板中的表達(dá)式只能訪問子組件的作用域
但在某些情況下,插槽中的內(nèi)容想要同時(shí)使用父組件和子組件內(nèi)的數(shù)據(jù),可以通過像組件傳遞數(shù)據(jù)props那樣,讓子組件在渲染時(shí)將一部分?jǐn)?shù)據(jù)提供給插槽,這樣在組件外部(父組件)中就可以使用子組件中的數(shù)據(jù)了-通過slot的方式

子組件傳入插槽的 props 作為了 v-slot 指令的值,可以在插槽內(nèi)的表達(dá)式中訪問,其中name是Vue特意保留的attribute,不會(huì)作為props進(jìn)行傳遞

  • 數(shù)據(jù)傳遞

//子組件

  • 數(shù)據(jù)接收

    //父組件 - 使用方

     {{ shopInfo }} {{ userInfo }}

  •   
        {{ shopInfo }}
      

      
        {{ introduction }}
      

      
        {{ userInfo }}
      
    • 具名插槽接收

    • 默認(rèn)插槽接收

  • 使用slot-scope時(shí),用最后一個(gè)slot-scope替換模板中的slot


    
    
555

    
    
        
{{scope.name}}

    

    
    
        
{{scope}}

        
{{scope.name}}

        
{{scope.age}}

    

// data: {
//     shapes: [
//         { name: 'Square', sides: 4 },
//         { name: 'Hexagon', sides: 6 },
//         { name: 'Triangle', sides: 3 }
//     ],
//     colors: [
//         { name: 'Yellow', hex: '#F4D03F', },
//         { name: 'Green', hex: '#229954' },
//         { name: 'Purple', hex: '#9B59B6' }
//     ]
// }

    
        
{{ shape.name }} ({{ shape.sides }} sides)

    


    
        

            

            {{ color.name }}
        

    


    {{ title }}
    
        
            
        
    



Vue.component('my-list', {
    template: '#my-list',
    props: [ 'title', 'items' ]
});

遞歸組件

遞歸組件就是指組件在模板中調(diào)用自己,由于是組件自身調(diào)用,就不能像常規(guī)組件定義一樣,可以省略組件的name配置,組件的遞歸需要依賴于自身的name配置(name還用于遍歷組件的name選項(xiàng)來查找組件的實(shí)例);


動(dòng)態(tài)組件

有時(shí)候我們需要根據(jù)一些條件,動(dòng)態(tài)的切換/選擇某個(gè)組件,在函數(shù)式組件中,沒有上下文的概念,常用于程序化的在多個(gè)組件中選擇一個(gè),可以間接的解決動(dòng)態(tài)切換組件的需求,缺點(diǎn)是基于js對(duì)象進(jìn)行開發(fā),不方便開發(fā);
Vue官方提供了一個(gè)內(nèi)置組件和is的屬性,用來解決上述的問題


//component 就是js import進(jìn)的組件實(shí)例,其值可以是標(biāo)簽名、組件名、直接綁定一個(gè)對(duì)象等

為了使得組件具有緩存作用,可以使用的內(nèi)置組件,這樣只要不離開當(dāng)前頁(yè)面,切換到其他組件后deforeDestory不會(huì)執(zhí)行,因此組件具有了緩存功能

拓展

components的第二種寫法

常規(guī)的組件components是直接通過引用定義好的組件進(jìn)行展示的,也可以直接在當(dāng)前組件內(nèi)定義,然后通過配置components進(jìn)行渲染


    


    

        

Lbxin


        

class - 11


    


Web Component 簡(jiǎn)介

HTML的slot元素,是Web Components技術(shù)套件的一部分,是Web組件內(nèi)的一個(gè)占位符,該占位符可以在后期使用自己的標(biāo)記語(yǔ)言進(jìn)行填充,這樣可以創(chuàng)建單獨(dú)的DOM樹,并將其與其他的組件組合在一起 -- MDN

常見的填充Web組件的shadow DOM的模板有template和slot

如常見的video標(biāo)簽,其內(nèi)部的一些控制器和按鈕等都是通過Shandow DOM進(jìn)行維護(hù)的,開發(fā)者可以通過這個(gè)API進(jìn)行自己獨(dú)立的邏輯控制

以上就是“Vue中的插槽、內(nèi)容分發(fā)、具名插槽應(yīng)用實(shí)例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱:Vue中的插槽、內(nèi)容分發(fā)、具名插槽應(yīng)用實(shí)例分析
文章地址:http://weahome.cn/article/jcspcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部