在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    「Solid.js項(xiàng)目實(shí)戰(zhàn)」禮品發(fā)放Web應(yīng)用之三

    「Solid.js項(xiàng)目實(shí)戰(zhàn)」禮品發(fā)放Web應(yīng)用之三

    「Solid.js項(xiàng)目實(shí)戰(zhàn)禮品發(fā)放Web應(yīng)用之二「Solid.js項(xiàng)目實(shí)戰(zhàn)」禮品發(fā)放Web應(yīng)用之一

    功能介紹

    本文將繼續(xù)上一篇文章的內(nèi)容,Signal和Effect是整個(gè)Solid響應(yīng)系統(tǒng)的基礎(chǔ),我們再通過一個(gè)禮品列表實(shí)例演示下使用Signal控制界面的方法。之后介紹了需要對代碼執(zhí)行組件化的一個(gè)情景,展示了代碼是如何隨著業(yè)務(wù)的需要而不斷地進(jìn)行組件化,它可能是由于某個(gè)組件的功能過于復(fù)雜了,也可能是由于組件中出現(xiàn)了冗余的代碼。最后,介紹了組件之間進(jìn)行通訊的一種機(jī)制-props,props實(shí)現(xiàn)了父組件向子組件傳遞數(shù)據(jù)的功能。

    列表數(shù)據(jù)

    Solid的Signal的初始狀態(tài)不僅僅是一個(gè)數(shù)值,它還可以是一個(gè)對象或一個(gè)數(shù)組。禮品列表數(shù)據(jù)目前使用的是HTML的值,只有第一個(gè)列表項(xiàng)的內(nèi)容將禮品的數(shù)量值綁定到了一個(gè)Signal上,它在上一篇文章《禮品發(fā)放Web應(yīng)用之二》中我們采用了Signal方式實(shí)現(xiàn)的?,F(xiàn)在我們需要實(shí)現(xiàn)的功能是將整個(gè)禮品列表中的所有數(shù)據(jù)(包括禮品的名稱和數(shù)量)全部綁定到Signal上。我們使用一個(gè)含有三個(gè)屬性的對象表示禮品的數(shù)據(jù)信息,它的三個(gè)屬性是id屬性、name屬性和count屬性。將4個(gè)列表項(xiàng)保存到一個(gè)數(shù)組giftData中,如下圖1所示。

    圖1

    圖1中id屬性唯一地標(biāo)識(shí)了一個(gè)禮品對象,但它不會(huì)顯示在禮品列表界面上。禮品對象數(shù)組建立之后,創(chuàng)建禮品列表數(shù)組所對應(yīng)的Signal,并將giftData數(shù)組作為Signal的初始值,如下圖2所示。

    圖2

    圖2中第27行代碼創(chuàng)建了一個(gè)Signal對象,之后通過使用gifts獲取禮品數(shù)組,通過setGifts修改禮品數(shù)組。

    與普通的Signal用法相同,但是這個(gè)Signal的返回值類型為數(shù)組類型,在使用時(shí)需要像訪問數(shù)組的方式使用它,比如獲取第一個(gè)禮品的方式為gifts()[0],計(jì)算禮品個(gè)數(shù)的方式為gifts().length。我們使用這個(gè)Signal來實(shí)現(xiàn)Gift組件,如下圖2所示

    圖3

    圖3中第34行代碼的第一個(gè)表達(dá)式gifts()[0].name的含義是:調(diào)用禮品列表Signal的getter方法gifts()獲取到當(dāng)前Signal的禮品數(shù)組,通過下標(biāo)0訪問數(shù)組中的第一個(gè)禮品對象,最后獲取到禮品對象的name屬性,這樣禮品的名稱就顯示到span元素中了。第34行代碼的第二個(gè)表達(dá)式gifts()[0].count與第一個(gè)表達(dá)式只有在最后獲取對象屬性時(shí)有所不同,其它的操作是完全相同的,它表示的是獲取這個(gè)禮品對象的數(shù)量值。同樣的道理,第37、40和43行代碼分別獲取數(shù)組中不同位置的禮品對象,并設(shè)置對應(yīng)的禮品名稱和數(shù)量。

    當(dāng)看到圖3中的代碼時(shí),這4個(gè)禮品項(xiàng)目界面的布局是完全相同的,我們可以將它抽象為一個(gè)更小的組件,我們將其命名為GiftItem組件,將其定義為如下的代碼:

    圖4

    圖4中的代碼使用了gifts中的第一個(gè)禮品對象,但是其它的3個(gè)禮物對象也應(yīng)該使用對應(yīng)的索引值獲取各自的禮品對象,而不是一直使用同樣的數(shù)據(jù),這樣就需要提供一種機(jī)制將圖4中第33行代碼中的表達(dá)式改為動(dòng)態(tài)的,即允許從組件的外部傳遞參數(shù)進(jìn)來,GiftItem組件依據(jù)不同的參數(shù)展現(xiàn)不同的內(nèi)容。這就是Solid提供的組件間數(shù)據(jù)交互的props機(jī)制。

    Props

    Props是Solid提供給組件與它的子組件進(jìn)行交互的一種機(jī)制。在子組件中定義一個(gè)props參數(shù),并在使用這個(gè)屬性的地方通過props訪問屬性名字,父組件就像使用普通的HTML屬性一樣設(shè)置它的數(shù)值即可,如下圖5所示

    圖5

    圖5中第30行代碼將props作為組件GiftItem的一個(gè)參數(shù),第33行代碼使用props.gift獲取父組件傳遞給這個(gè)組件的gift屬性,這個(gè)gift屬性是禮品對象,所以可以通過.name和.count分別獲取它的名稱和數(shù)量。與圖4中的組件相比,這個(gè)組件實(shí)現(xiàn)了參數(shù)傳遞功能,實(shí)現(xiàn)此功能之后,我們就可以將每一個(gè)組件所對應(yīng)的禮品對象通過gift屬性傳遞給GiftItem組件,組件便會(huì)自己執(zhí)行渲染操作。

    圖6

    使用GiftItem組件之后禮品列表組件的內(nèi)容簡化為圖6中的模樣了,相比之前的代碼,清晰了許多。什么?丟失了一個(gè)功能!是的,之前的禮品列表中第二項(xiàng)選中效果被弄沒了,沒關(guān)系,我們將列表選中效果再通過props實(shí)現(xiàn)一遍。

    組件中的props參數(shù)對使用的屬性數(shù)量是沒有限制的,它可以指定多個(gè)屬性名稱。比如我們將selected作為一個(gè)props的屬性傳遞至GiftItem組件,如下圖7所示。

    圖7

    圖7中在GiftItem組件中添加對selected類的使用,第32行代碼將其作為p元素classList屬性的selected的屬性值,如果props中的selected為真值,那么,selected類就會(huì)應(yīng)用到這個(gè)p元素上,反之,則不會(huì)添加selected類。修改完成子組件GiftItem之后,我們再回到父組件Gift中將屬性selected值設(shè)置為真值,如下圖8第42行代碼所示,當(dāng)selected為真值時(shí),第2個(gè)列表項(xiàng)GiftItem中的selected類就會(huì)生效,即顯示出選中效果。

    圖8

    總結(jié)

    Solid提供的Signal狀態(tài)支持多種的數(shù)據(jù)類型,用戶只需要在獲取和設(shè)置對應(yīng)的類型時(shí)正確地按照對象類型操作就可以,如果是數(shù)組,那么就按照數(shù)組方式訪問它,如果是對象就按照對象的方式使用它。但是需要時(shí)刻謹(jǐn)記createSignal的返回值數(shù)組元素為兩個(gè)函數(shù),而不是狀態(tài)數(shù)值。

    Solid為父子組件之間提供了數(shù)據(jù)交互方式-props,通過props我們就可以實(shí)現(xiàn)將父組件中的數(shù)據(jù)傳遞給子組件,子組件便稱為了一個(gè)動(dòng)態(tài)的組件,它所顯示內(nèi)容可以依照父組件提供的值而顯示。

    謝謝閱讀,我們下一篇文章見。

    「Solid.js項(xiàng)目實(shí)戰(zhàn)」禮品發(fā)放Web應(yīng)用之二「Solid.js項(xiàng)目實(shí)戰(zhàn)」禮品發(fā)放Web應(yīng)用之一

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月22日 21:20
    下一篇 2022年6月22日 21:21

    相關(guān)推薦

    • 30個(gè)無加盟費(fèi)的項(xiàng)目(茶顏悅色奶茶店加盟費(fèi)多少)

      茶顏悅色又爆了,8月18日,茶顏悅色南京門店正式開業(yè),開張不到半小時(shí),門店就人滿為患,消費(fèi)者的購買熱情十分高漲,而由于人流量過大造成擁堵,茶顏悅色也不得不暫停營業(yè)。 當(dāng)然,這里面排…

      2022年11月27日
    • 存儲(chǔ)過程語法(sql server存儲(chǔ)過程語法)

      今天小編給各位分享存儲(chǔ)過程語法的知識(shí),其中也會(huì)對sql server存儲(chǔ)過程語法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! oracle存儲(chǔ)過程基本語法…

      2022年11月26日
    • 凈利潤率越高越好嗎(凈利潤率多少合適)

      一、持續(xù)增收不增利,平均凈利潤率首次跌入個(gè)位數(shù) 2021年,增收不增利依舊是行業(yè)主流。具體來看,大部分企業(yè)營業(yè)收入呈增長態(tài)勢,E50企業(yè)平均同比增速達(dá)到17.3%,但是利潤增速則明…

      2022年11月26日
    • 《寶可夢朱紫》獒教父屬性是什么?獒教父屬性一覽

      寶可夢朱紫里獒教父是一只很強(qiáng)的寶可夢,很多玩家不清楚獒教父的屬性是什么樣的,下面就給大家?guī)韺毧蓧糁熳祥峤谈笇傩砸挥[,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 獒教父屬性一覽…

      2022年11月25日
    • 《寶可夢朱紫》太晶化強(qiáng)力寶可夢推薦 太晶化哪些寶可夢最強(qiáng)?

      寶可夢朱紫游戲中寶可夢種類繁多,不過有的寶可夢比較強(qiáng),有的稍弱一些,那么太晶化化哪些寶可夢最強(qiáng)呢,為了便于大家更好的體驗(yàn)游戲,這里給大家?guī)砹藢毧蓧糁熳咸Щ瘡?qiáng)力寶可夢推薦,一起來…

      2022年11月25日
    • 寶可夢朱紫四大天王屬性怎么樣 四大天王屬性數(shù)值介紹

      寶可夢朱紫四大天王屬性如何?四大天王的屬性數(shù)值玩家們還是挺好奇的,想要了解四大天王屬性的可以看看下面小編的介紹,小編會(huì)把四大天王的屬性數(shù)值全都分享在下面,各位趕緊來小編這里多了解一…

      2022年11月25日
    • 寶可夢朱紫皮卡丘多少級進(jìn)化 皮卡丘進(jìn)化條件攻略

      寶可夢朱紫皮卡丘進(jìn)化條件是什么?皮卡丘怎么進(jìn)化?作為最受歡迎的電屬性寶可夢,大家都很想知道皮卡丘進(jìn)化的方法,今天小編這就在下面的攻略中分享皮卡丘進(jìn)化條件,各位可以趕緊來小編這里了解…

      2022年11月25日
    • 規(guī)范透明促PPP高質(zhì)量發(fā)展——16萬億元大市場迎來新規(guī)

      近日,財(cái)政部印發(fā)《關(guān)于進(jìn)一步推動(dòng)政府和社會(huì)資本合作(PPP)規(guī)范發(fā)展、陽光運(yùn)行的通知》,從做好項(xiàng)目前期論證、推動(dòng)項(xiàng)目規(guī)范運(yùn)作、嚴(yán)防隱性債務(wù)風(fēng)險(xiǎn)、保障項(xiàng)目陽光運(yùn)行四個(gè)方面進(jìn)一步規(guī)范P…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊,可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來定…

      2022年11月25日
    • 推薦3種白手起家的賺錢項(xiàng)目(白手起家賺錢項(xiàng)目有哪些)

      如今社會(huì)壓力非常的大,家有老少要養(yǎng)活,這些都加速了窮人想要?jiǎng)?chuàng)業(yè)的欲望,但是創(chuàng)業(yè)路總是那么的艱難,資金就是創(chuàng)業(yè)的重頭戲,所以選擇一個(gè)低成本又賺錢的項(xiàng)目是大多數(shù)人最期望的了,那么有哪些…

      2022年11月25日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息