亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

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

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

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

                功能介紹

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

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

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

                圖1

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

                圖2

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

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

                圖3

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

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

                圖4

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

                Props

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

                圖5

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

                圖6

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

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

                圖7

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

                圖8

                總結(jié)

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

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

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

                「Solid.js項目實戰(zhàn)」禮品發(fā)放Web應(yīng)用之二「Solid.js項目實戰(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個無加盟費的項目(茶顏悅色奶茶店加盟費多少)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                  2022年11月25日

                聯(lián)系我們

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