vue插槽 slot 插槽之間的父子傳參


原始地址:https://segmentfault.com/a/1190000012996217

插槽:slot,是組件的一塊HTML模板,這塊模板顯示不顯示、以及怎樣顯示由 父組件來決定。 實際上,一個slot最核心的兩個問題這里就點出來了,是顯示不顯示怎樣顯示

      顯不顯示和怎樣能夠顯示由父組決定

      非插槽模板指的是html模板,指的是‘div、span、ul、table’這些,非插槽模板的顯示與隱藏以及怎樣顯示由插件自身控制;

      插槽模板是slot,它是一個空殼子,因為它顯示與隱藏以及最后用什么樣的html模板顯示由父組件控制。但是插槽顯示的位置確由子組件自身決定,slot寫在組件template的哪塊,父組件傳過來的模板將來就顯示在哪塊

自己的話講:非插槽模板,自己決定自己顯示,插槽:父級決定子級顯示;

一,單個插槽:沒有name屬性。一個組件只能用一次,slot 沒有name又叫匿名插槽。

  匿名插槽,子組件被引入父組件的時候,被父組件使用了,子組件需要一個<slot/>來占位,有名字的占位,叫具名插槽

例如:子組件:<slot></slot>

    父組件:<chlid>

         <div>999999</div>   //div的內容代替了子組件的匿名插槽   【父組件<div>999999</div> ===子組件<slot></slot>】

        </child>

自己話說:<slot></slot>在子組件中,在父組件中的子組件中顯示,但仍然屬於子組件。單純的占個位置slot

二,具名插槽:有name屬性,一個頁面你可以使用多次,只要名字不同就行了,slot 加了name屬性,就叫具名插槽;

    父組件通過html模板上的slot屬性關聯具名插槽。沒有slot屬性的html模板默認關聯匿名插槽。

     父組件:<div slot="up">

     <span>菜單1</span>

     <span>菜單2</span>

     <span>菜單3</span>

     </div>

    子組件: <slot name='up'></slot>

 

作用域插槽:子組件通過屬性<slot  :自定義屬性名=‘值’></slot>,將自己內部的原始類型給到父組件;

      父組件<template  slote-scope='自定義接收'></template>  共同點是由slot這個單詞

      子組件 slot 除了要占個位置還要傳遞參數,父組件slote-scope負責接收參數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM