摘要:你創(chuàng)建了這樣一個(gè)組件使用方法如下這樣就可以正常運(yùn)行了。上述代碼可能會(huì)出現(xiàn)一些問(wèn)題,如果需要更多按鈕更多交互等等這些情況,怎么辦幸好,提供了一個(gè)更簡(jiǎn)潔的解決方案具名。
也許你已經(jīng)看過(guò)了Vue.js slots的文檔。我對(duì)這個(gè)功能從“為什么你可能需要它”到“沒(méi)有它我怎么可能工作”的態(tài)度轉(zhuǎn)變非???。
雖然文檔已經(jīng)解釋了它的概念,但是這里有一個(gè)關(guān)于slots怎么改進(jìn)應(yīng)用程序代碼庫(kù)的真實(shí)例子。
在我看來(lái),slots是vue最有用和最有趣的特性之一。雖然這是web組件所推薦的標(biāo)準(zhǔn),但是我不知道有其他框架已經(jīng)實(shí)現(xiàn)了這一特性。解釋slots的作用很簡(jiǎn)單,但是很難解釋它為什么有用(如果不使用“可組合性”這個(gè)術(shù)語(yǔ)),所以我要給你一個(gè)使用例子。
假設(shè)你的app有很多表單,表單包含幾個(gè)部分:
表單頭部:包含關(guān)于表單的信息
表單元素:供用戶輸入
按鈕
現(xiàn)在你想要把表單抽象為一個(gè)獨(dú)立組件。你那些使用react和angular的同事告訴你,你需要使用類似React的組合vs繼承或者Angular1的Transclude這樣的特性,于是你找到了slots的文檔。
你創(chuàng)建了這樣一個(gè)組件:
使用方法如下:
這樣就可以正常運(yùn)行了??墒?,產(chǎn)品告訴你,一個(gè)特定的表單需要一個(gè)文本塊來(lái)獲得幫助信息的標(biāo)題,按鈕名要改為“Request”。這超出了“children”能做的范圍。
上述代碼可能會(huì)出現(xiàn)一些問(wèn)題,如果需要更多按鈕、更多交互等等這些情況,怎么辦?幸好,vuejs提供了一個(gè)更簡(jiǎn)潔的解決方案:具名slots。于是,你把代碼改成下面這樣:
使用方法:
Please ask your manager before requesting hardware.
在我看來(lái),關(guān)鍵思想是:
將slots當(dāng)作傳遞給子組件的屬性。就像傳遞字符串、整數(shù)和對(duì)象,而slots是傳遞一個(gè)子dom樹(shù),讓子組件可以在任何需要的地方使用。
使用slots的其他場(chǎng)景:
通用的模態(tài)窗
類似bootstrap的面板和自定義內(nèi)容這樣的事情
使用slots的更多優(yōu)點(diǎn):
子組件用于樣式和展示,業(yè)務(wù)邏輯都保留在父元素中。
如果沒(méi)有傳遞內(nèi)容給slots,就不會(huì)展示東西。這讓你可以很好地復(fù)用它們,并且只在你想要的slots中傳遞。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90109.html
摘要:需要注意的是,同樣的行為也適用于。這意味著我們必須重新綁定每個(gè)事件。組件的由調(diào)用它的父組件提供,這意味著所有事件都應(yīng)該與父組件相關(guān)聯(lián)。 原文鏈接:Vue.js — Considerations and Tricks showImg(https://segmentfault.com/img/bVbqHOd?w=1600&h=1599); Vue.js 是一個(gè)很棒的框架。然而,當(dāng)你開(kāi)始構(gòu)建...
摘要:它們之間必然需要相互通信父組件要給子組件傳遞數(shù)據(jù),子組件需要將它內(nèi)部發(fā)生的事情告知給父組件。父組件通過(guò)向下傳遞數(shù)據(jù)給子組件,子組件通過(guò)給父組件發(fā)送消息。這是由使用的父組件決定的。 Vue.js的組件 注冊(cè)組件 全局注冊(cè) 要注冊(cè)一個(gè)全局組件,你可以使用 Vue.component(tagName, options)。例如: Vue.component(my-component, { ...
摘要:函數(shù)通過(guò)參數(shù)來(lái)創(chuàng)建虛擬,結(jié)構(gòu)精簡(jiǎn)。其中,訪問(wèn)的用法,使用場(chǎng)景集中在函數(shù)。使用代替模板功能在函數(shù)中,不再需要內(nèi)置的指令,比如。方法時(shí)快速改變數(shù)組結(jié)構(gòu),返回一個(gè)新數(shù)組。 學(xué)習(xí)筆記:Render函數(shù) Render函數(shù) Vue2與Vue1最大的區(qū)別就在于Vue2使用了虛擬DOM來(lái)更新DOM節(jié)點(diǎn),提升渲染性能。 Vue2與Vue1最大的區(qū)別就在于Vue2使用了虛擬DOM來(lái)更新DOM節(jié)點(diǎn),提升...
摘要:前言本文主要介紹屬性事件和插槽這三個(gè)基礎(chǔ)概念使用方法及其容易被忽略的一些重要細(xì)節(jié)。至于如何改變,我們接下去詳細(xì)介紹單向數(shù)據(jù)流這個(gè)概念出現(xiàn)在組件通信。比如上例中在子組件中修改父組件傳遞過(guò)來(lái)的數(shù)組從而改變父組件的狀態(tài)。的一個(gè)核心思想是數(shù)據(jù)驅(qū)動(dòng)。 前言 本文主要介紹屬性、事件和插槽這三個(gè)vue基礎(chǔ)概念、使用方法及其容易被忽略的一些重要細(xì)節(jié)。如果你閱讀別人寫(xiě)的組件,也可以從這三個(gè)部分展開(kāi),它們...
摘要:事件總線事件總線首先創(chuàng)建了一個(gè)名為的空的實(shí)例然后全局定義了組件最后創(chuàng)建了實(shí)例。在父組件模板中,子組件標(biāo)簽上使用指定一個(gè)名稱,并在父組件內(nèi)通過(guò)來(lái)訪問(wèn)指定名稱的子組件。 學(xué)習(xí)筆記:組件詳解 組件詳解 組件與復(fù)用 Vue組件需要注冊(cè)后才可以使用。注冊(cè)有全局注冊(cè)和局部注冊(cè)兩種方式。 全局注冊(cè) Vue.component(my-component, {}); 要在父實(shí)例中使用這個(gè)組件,必須要...
閱讀 1298·2021-09-27 13:35
閱讀 2606·2021-09-06 15:12
閱讀 3410·2019-08-30 15:55
閱讀 2863·2019-08-30 15:43
閱讀 455·2019-08-29 16:42
閱讀 3471·2019-08-29 15:39
閱讀 3094·2019-08-29 12:28
閱讀 1267·2019-08-29 11:11