精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

事半功倍!這5個(gè)React應(yīng)用程序庫(kù)不要錯(cuò)過(guò)……

開發(fā) 前端
編輯 搜圖或許你一直在從頭開始構(gòu)建React應(yīng)用程序,這當(dāng)然無(wú)可厚非。但當(dāng)你遇見了今天要介紹的這些庫(kù),一定會(huì)感嘆相見恨晚!

編輯 搜圖或許你一直在從頭開始構(gòu)建React應(yīng)用程序,這當(dāng)然無(wú)可厚非。但當(dāng)你遇見了今天要介紹的這些庫(kù),一定會(huì)感嘆相見恨晚!

React最令人喜愛的地方是,沒有固定的方法來(lái)構(gòu)建應(yīng)用程序。開發(fā)人員可以自由選擇要使用的庫(kù)和要遵循的模式,你可以隨意去實(shí)現(xiàn)自己天馬行空的想法。

[[320552]]

在這里所創(chuàng)建的大多數(shù)應(yīng)用程序,無(wú)論是用于工作還是個(gè)人項(xiàng)目,都是從相同的庫(kù)開始的。

利用React社區(qū),你不必再耗時(shí)另起爐灶,可以花更多的時(shí)間為用戶提供價(jià)值。

所以千萬(wàn)不要錯(cuò)過(guò)呀~

1. Formik

面對(duì)現(xiàn)實(shí)吧,幾乎所有的網(wǎng)絡(luò)應(yīng)用程序都有表單,這是一件很棘手的事情。

對(duì)于用戶來(lái)說(shuō),沒有什么比表單不能正常工作,或在錯(cuò)誤驗(yàn)證后重置,再次輸入所有信息更讓人沮喪的了。表單正確,是網(wǎng)絡(luò)應(yīng)用程序中讓用戶擁有良好體驗(yàn)的關(guān)鍵。

那就意味著:

  • 表單字段應(yīng)具有客戶端驗(yàn)證。
  • 字段在用戶“觸摸”或表單提交之前不應(yīng)顯示錯(cuò)誤。
  • 無(wú)效提交時(shí),表單狀態(tài)不應(yīng)為“丟失”或“重置”。
  • 提交后,表單應(yīng)該進(jìn)行異步(服務(wù)器端)驗(yàn)證。

自己編寫一個(gè)處理所有這些事情的組件是相當(dāng)復(fù)雜的。需要跟蹤所有表單值,以及所有表單字段的“觸摸”狀態(tài),甚至包括 “錯(cuò)誤”。

此外,還需要構(gòu)建表單提交的邏輯。這些都需要足夠通用,以便在整個(gè)應(yīng)用程序中重用。沒有人想在登錄表單、注冊(cè)表單、地址表單等等中一遍遍重復(fù)它。

所以,使用React社區(qū)的一個(gè)流行庫(kù),是比自己構(gòu)建更好的選擇。

Formik是JaredPalmer開發(fā)的一個(gè)庫(kù),在這里,表單編寫變得輕而易舉。

2. 測(cè)試庫(kù)

測(cè)試省了很多時(shí)間。當(dāng)筆者創(chuàng)建一個(gè)復(fù)雜的特性或組件時(shí),總是在設(shè)計(jì)、產(chǎn)品和開發(fā)之間“游蕩”。設(shè)計(jì)師可能會(huì)要求進(jìn)行視覺或UX更改,產(chǎn)品部門可能要求更改UX。筆者只得不斷地反復(fù)、重構(gòu)和更新組件。

通過(guò)確保組件或特性的正確測(cè)試,可以確保這種重構(gòu)不會(huì)允許回歸潛入代碼庫(kù)。它節(jié)省了大量的人工測(cè)試時(shí)間,這給了人們更多信心。

涉及到測(cè)試React應(yīng)用程序時(shí),有一個(gè)黃金標(biāo)準(zhǔn):testing-library/react,也稱為react-testing-library。它已經(jīng)內(nèi)置在create-react-app中,所以入門就變得很簡(jiǎn)單啦。

使用testing-library,可以從用戶的角度測(cè)試組件。

什么意思?下面用一個(gè)實(shí)際的例子來(lái)說(shuō)明。

在這個(gè)示例中,筆者為一個(gè)簡(jiǎn)單的注冊(cè)表單編寫了一個(gè)測(cè)試。它要求用戶提供姓名、電子郵件和密碼。這些都是必填字段,如果省略了任何一項(xiàng),那么表單應(yīng)該在提交時(shí)顯示一個(gè)錯(cuò)誤。

  1. import {render, fireEvent } from "@testing-library/react"; 
  2. import userEvent from "@testing-library/user-event"; 
  3. import { SignupForm } from "./Form";describe("SignupForm",() => { 
  4.   it("should show an error whenpassword is omitted", () => { 
  5.     const renderrendered =render(<SignupForm />); 
  6.     const nameInput =rendered.queryByLabelText("Name"); 
  7.     userEvent.type(nameInput, "JohnSmith"); 
  8.     const emailInput =rendered.queryByLabelText("Email"); 
  9.     userEventtype(emailInput, "john@smith.net"); 
  10.     const submitButton =rendered.queryByText("Submit"); 
  11.     userEvent.click(submitButton); 
  12.     expect( 
  13.       rendered.queryByText("Pleaseinput your password") 
  14.     ).toBeInTheDocument(); 
  15.   }); 
  16. }); 

如你所見,首先使用react-testing-library呈現(xiàn)注冊(cè)表單。

之后輸入姓名與郵箱。

之后點(diǎn)擊提交。

最后,出現(xiàn)了“請(qǐng)輸入您的密碼”。

這個(gè)測(cè)試中的一切都基于用戶如何與表單交互。可以重構(gòu)表單以使用不同的輸入,將其拆分成多個(gè)react組件,所有這些都不會(huì)破壞測(cè)試。

3. CSS-Modules和Classnames

當(dāng)筆者開始一個(gè)新的React項(xiàng)目時(shí),通常會(huì)選擇CSS-Modules。create-react-app中內(nèi)置了支持,很容易上手。

當(dāng)然,可以通過(guò)遵循BEM來(lái)避免依賴,但是需要學(xué)習(xí)如何使用BEM。CSS-Modules提供了可預(yù)測(cè)的、范圍有限的、清晰的CSS。

筆者喜歡將classnames和CSS-Modules一起使用。先看下面這段代碼:

  1. constclassName = 'button ' + props.hasError ? 'error' : '';return ( 
  2.  <button className={classname}{...props} /> 
  3. ); 

有了classnames,可以進(jìn)行簡(jiǎn)化,然后變成這樣:

  1. constButton = props => ( 
  2.   <button 
  3.    className={classnames("button", { error: props.hasError })} 
  4.     {...props} 
  5.   /> 
  6. ); 

甚至可以將它與CSS-Modules相結(jié)合:

  1. importstyles from './Button.module.css';const Button = props => ( 
  2.   <button 
  3.     className={classnames(styles.button,{ [styles.error]: props.hasError })} 
  4.     {...props} 
  5.   /> 
  6. ); 

有作用域,易于編寫CSS,就問你香不香!

4. Downshift

也許你會(huì)問,為什么要使用外部庫(kù)來(lái)創(chuàng)建像下拉列表或選擇輸入這樣簡(jiǎn)單的東西呢?

構(gòu)建一個(gè)基于鼠標(biāo)單擊打開或關(guān)閉的組件確實(shí)非常簡(jiǎn)單。但與許多前端任務(wù)一樣,困難的不僅僅是構(gòu)建組件。

創(chuàng)建一個(gè)大量依賴屏幕閱讀器的互聯(lián)網(wǎng)用戶可訪問和可用的下拉列表不簡(jiǎn)單,讓它在keyboardusers中正常工作并非易事。

這就是筆者喜歡使用downshift的原因。它具有這樣的可訪問性,并可自行選擇其他的功能與形式。

[[320553]]

圖源:unsplash

當(dāng)筆者開始一個(gè)新的React應(yīng)用程序時(shí),總會(huì)安裝這些庫(kù),省時(shí)省力,豈不美哉?

Formik能更快編寫漂亮的表單。

測(cè)試庫(kù) 有助于編寫耐用的集成測(cè)試,為應(yīng)用程序提供信心。

CSS Modules 和 classnames 用于編寫有作用域的CSS。

Downshift 可以創(chuàng)建可訪問的組合框和選擇輸入,而無(wú)需覆蓋默認(rèn)樣式。

這樣的神器,你值得擁有!

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2013-04-22 09:21:43

2023-04-11 16:31:10

開發(fā)React 庫(kù)Web

2021-02-06 10:27:51

Linux發(fā)行版操作系統(tǒng)

2023-11-27 19:22:24

Python庫(kù)編程語(yǔ)言

2020-10-14 15:05:02

React應(yīng)用程序

2021-05-05 10:06:09

React應(yīng)用程序微前端

2020-08-17 17:22:34

VSCode插件開發(fā)編碼

2022-05-20 15:27:41

React工具Vue

2020-12-16 15:37:19

Python編程語(yǔ)言開發(fā)

2021-10-28 19:21:56

GolangGo變量

2021-07-14 17:39:46

ReactRails API前端組件

2019-08-28 07:28:13

React應(yīng)用程序代碼

2020-10-10 10:30:31

JavaScript開發(fā)技術(shù)

2014-08-28 14:09:40

AppAndroid Wea應(yīng)用

2021-09-22 09:14:33

Linux編程Visual Stud

2010-01-27 17:36:24

C++程序庫(kù)

2013-08-15 13:29:52

Moco程序庫(kù)設(shè)計(jì)

2020-11-17 16:22:45

開源工具報(bào)表

2020-04-17 10:32:59

在線軟件文檔工具代碼

2010-01-19 09:39:43

C++標(biāo)準(zhǔn)程序庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91精品久久久久久久蜜月| 向日葵视频成人app网址| 国产成人一区在线| 91精品国产成人www| 日韩中文字幕电影| 久草综合在线| 天涯成人国产亚洲精品一区av| 欧美性色黄大片人与善| 国产精品久久久午夜夜伦鲁鲁| 精品999日本| 尤物tv国产一区| 自拍偷拍激情视频| 色综合天天色| 五月天国产精品| 免费国产成人看片在线| 手机福利在线| 日本aⅴ精品一区二区三区 | 国产一区二区免费在线观看| 欧美成人精品网站| 亚洲日韩视频| 欧美精品在线免费| 调教驯服丰满美艳麻麻在线视频| 老司机凹凸av亚洲导航| 88在线观看91蜜桃国自产| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 亚洲淫性视频| 亚洲国产精品精华液2区45| 国产欧美一区二区三区不卡高清| 国产又粗又大又黄| 久久亚洲国产精品一区二区| 国内精品免费午夜毛片| 成年人一级黄色片| 久久一级电影| 中文字幕综合一区| 久久精品成人av| 麻豆精品99| 精品国产一区a| 成人高清在线观看视频| 中文成人激情娱乐网| 欧美日韩你懂得| 五月天婷婷激情视频| 成人小电影网站| 精品久久久久久久久久国产 | 一级黄色片日本| 日本一区二区免费高清| 亚洲香蕉成视频在线观看| 人妻无码一区二区三区| 欧美成人一区在线观看| 亚洲黄色在线观看| 亚州av综合色区无码一区| 国产suv精品一区| 日韩片之四级片| 三上悠亚 电影| 亚洲一区网址| 亚洲精品99999| 亚洲天堂资源在线| 香蕉一区二区| 亚洲免费电影在线观看| 亚洲第一综合网| 欧美gay男男猛男无套| 色婷婷综合久久久久| 午夜国产福利视频| 亚洲经典一区| 欧美精品www| 国产高潮久久久| 久久最新视频| 国产精品入口免费视| 一区二区三区免费在线| 国产在线精品一区二区| 97在线中文字幕| 天堂中文在线资源| 久久久亚洲精品一区二区三区 | 91一区二区三区四区| 久久精品国产清自在天天线| www.毛片com| 99精品视频免费观看| 欧美一区二区三区免费视| 亚洲成人av网址| 韩国精品一区二区| 国产精品美女诱惑| 男人天堂网在线观看| 国产精品久久久久久亚洲毛片 | 久久精品91| 国产精品流白浆视频| 国产乱人乱偷精品视频| 成人精品高清在线| 日韩欧美精品一区二区| 成人看片免费| 色香蕉成人二区免费| av免费一区二区| 欧美日韩一本| 色老头一区二区三区| 久久久综合久久| 日韩 欧美一区二区三区| 亚洲最大的av网站| 天堂а√在线8种子蜜桃视频| 国产精品护士白丝一区av| 久久这里只有精品8| 91av亚洲| 精品国产91洋老外米糕| 欧美福利在线视频| 99热精品在线观看| 91在线高清视频| 国产一区精品| 午夜影院久久久| 中文 日韩 欧美| 精品成av人一区二区三区| 久久99精品视频一区97| wwwwww在线观看| 91亚洲永久精品| 潘金莲一级淫片aaaaa免费看| 在线亚洲人成| 亚洲激情自拍图| 一起操在线播放| 免费看的黄色欧美网站| 7777精品久久久大香线蕉小说| 精品亚洲综合| 亚洲第一福利一区| 日本高清免费观看| 欧美一二区在线观看| 91精品国产91久久久久久久久| 国产免费高清视频| 国产精品少妇自拍| aⅴ在线免费观看| 精品久久对白| 欧美高清电影在线看| 一卡二卡在线视频| 欧美国产激情一区二区三区蜜月 | 久久国产精品色| 日韩黄色影视| 大胆人体一区二区| 日韩av在线导航| 国产在线视频卡一卡二| 国内成人精品2018免费看| 亚洲精品久久区二区三区蜜桃臀 | 最新国产拍偷乱拍精品| 超碰在线观看97| 午夜小视频在线观看| 欧美一区二区三区播放老司机| 萌白酱视频在线| 久久精品国产一区二区三区免费看| 日韩国产在线一区| 国产成人77亚洲精品www| 国产亚洲精品久久久久久777| 伦av综合一区| 久久久美女艺术照精彩视频福利播放| 日韩a在线播放| 最新亚洲精品| 国产成人一区二| eeuss影院在线播放| 欧美偷拍一区二区| 性爱在线免费视频| 久久99精品国产.久久久久久| 亚洲精品高清国产一线久久| 热久久久久久| 超碰91人人草人人干| aaa一区二区三区| 亚洲妇熟xx妇色黄| 蜜桃精品成人影片| 日韩av电影天堂| 在线综合视频网站| 日韩欧美另类中文字幕| 久久久久久亚洲精品中文字幕| 污污网站在线免费观看| 91高清视频在线| 精品少妇一区二区三区密爱| 精东粉嫩av免费一区二区三区| 国产一级黄色录像片| 成人爽a毛片免费啪啪红桃视频| 91av视频在线免费观看| 国产在线黄色| 欧美精品成人一区二区三区四区| 欧美成人国产精品高潮| 91在线视频观看| 狠狠热免费视频| 在线看片不卡| 精品国产一区二区三区麻豆免费观看完整版 | 在线观看av大片| 亚洲乱码国产乱码精品精的特点| 亚洲午夜久久久久久久久| 免费一区视频| 蜜臀在线免费观看| 欧美毛片免费观看| 国产日韩欧美另类| 欧美黑人xx片| 一区二区三区黄色| 好吊色一区二区| 欧美伊人久久大香线蕉综合69| 久久久久99精品成人片试看| 91女神在线视频| www.桃色.com| 久久精品一区二区国产| 91九色国产ts另类人妖| 西野翔中文久久精品国产| 国产在线不卡精品| 僵尸再翻生在线观看| 久久久成人av| 精品视频一二区| 亚洲成人教育av| 国产又粗又黄又爽的视频| 欧美视频第一页| 青青草国产在线观看| 日本一区二区三区视频视频| 日本wwwwwww| 精品综合久久久久久8888| 男人操女人免费软件| 综合视频在线| 亚洲国产一区在线| 亚瑟一区二区三区四区| 亚洲综合精品伊人久久| 国产精品久久久久久妇女| 97国产精品免费视频| 国产在线激情视频| 国产一区二区三区直播精品电影 | 另类美女黄大片| 国产原创av在线| 日韩禁在线播放| 高清国产mv在线观看| 91精品国产综合久久福利软件| 亚洲大片免费观看| 精品久久久中文| 久久精品国产亚洲AV无码麻豆| 一区精品在线播放| youjizz亚洲女人| 欧美激情一区三区| 91国模少妇一区二区三区| 97久久超碰国产精品电影| 中文字幕1区2区| 国产成人免费视频| 男生和女生一起差差差视频| 免费人成精品欧美精品| 99免费视频观看| 久久综合婷婷| 国产真实乱子伦| 欧美亚洲一级| 日韩少妇内射免费播放| 国产色综合网| 国产伦精品一区二区三区四区视频_| 国产精品mv在线观看| 男女裸体影院高潮| 午夜精品国产| www.avtt| 99国产精品99久久久久久粉嫩| 成人午夜视频在线观看免费| 亚洲国产第一| 九色在线视频观看| 欧美一区=区| 波多结衣在线观看| 久久er99热精品一区二区| 亚洲娇小娇小娇小| 麻豆91精品91久久久的内涵| 国产又猛又黄的视频| 美女视频黄 久久| 欧美又黄又嫩大片a级| 黑人巨大精品欧美黑白配亚洲| 999热精品视频| 国产成人精品亚洲日本在线桃色| 中文字幕18页| 99久久精品一区二区| 精品无人区无码乱码毛片国产| 国产亚洲精品精华液| 手机av在线不卡| 亚洲精品高清视频在线观看| 精品一区在线视频| 狠狠色噜噜狠狠狠狠97| 久久这里只有精品9| 6080国产精品一区二区| 亚洲成人77777| 亚洲精品大尺度| 丁香婷婷在线| 美女国内精品自产拍在线播放| wwww亚洲| 国产精品激情av电影在线观看| 久久91超碰青草在哪里看| 成人av蜜桃| 激情综合网站| 五月天激情图片| 欧美另类自拍| 视频二区欧美| 91久久中文字幕| 国产精品超碰| 日韩在线三级| 一区二区三区午夜视频| 亚洲美免无码中文字幕在线| 老司机亚洲精品| 四虎1515hh.com| 久久久九九九九| 强行糟蹋人妻hd中文| 色综合天天综合在线视频| 在线中文字幕网站| 亚洲福利视频久久| 日本中文字幕伦在线观看| 高清欧美性猛交| 欧美另类激情| 久久久综合香蕉尹人综合网| 国产精品久久观看| 日本黄网站免费| 国产麻豆一精品一av一免费| 白白色免费视频| 一区二区三区日韩欧美精品| 亚洲av综合一区| 亚洲黄色在线看| 1769免费视频在线观看| 国产mv久久久| 久久免费视频66| 亚洲国产一二三精品无码| 日产欧产美韩系列久久99| 国产日韩视频一区| 国产精品不卡在线| 国产情侣小视频| 亚洲国产97在线精品一区| 免费大片在线观看www| 日本久久中文字幕| 激情小说亚洲色图| 日本黄xxxxxxxxx100| 日本亚洲视频在线| 欧美大片免费播放器| 亚洲影院久久精品| 国产乱淫av片免费| 一区三区二区视频| 亚洲第一av| 韩国成人一区| 亚洲福利久久| 88av在线播放| 亚洲一区二区在线免费看| 国产美女自慰在线观看| 视频一区视频二区国产精品| 日韩国产网站| 欧美性大战久久久久| 久久aⅴ国产紧身牛仔裤| 中文字幕一区二区三区乱码不卡| 一区二区三区不卡视频在线观看| 国产精品久久777777换脸| 中文字幕亚洲一区二区三区五十路 | 老司机午夜性大片| 中文字幕国产精品一区二区| 亚洲av无码不卡| 亚洲美女黄色片| 午夜日韩成人影院| 日韩激情视频| 免费av成人在线| 91动漫免费网站| 欧美麻豆精品久久久久久| 日本三级在线视频| 91久久久在线| 欧美不卡一区| 国产高潮视频在线观看| 午夜精品福利视频网站| 天堂在线资源库| 日本一区二区三区四区视频| 国内精品视频在线观看 | 成人在线视频免费| 亚洲一区二区三区精品在线观看| 久久er精品视频| 欧美精品一区二区成人| 欧美精品一区二区三| 中文不卡1区2区3区| 青青草成人激情在线| 日本不卡视频在线| 一起操在线播放| 亚洲成人a**站| 都市激情亚洲综合| 亚洲二区三区四区| 国产一区二区三区国产| 国产一级视频在线播放| 日韩高清人体午夜| 国产成人a视频高清在线观看| 男女爱爱视频网站| av亚洲精华国产精华精华| 懂色av中文字幕| 久久综合电影一区| 精品女人视频| 天天干天天干天天干天天干天天干| 亚洲啪啪综合av一区二区三区| 亚洲国产精品久久久久久6q| 欧美在线性视频| 国产精品99在线观看| 无码人妻aⅴ一区二区三区玉蒲团| 粉嫩老牛aⅴ一区二区三区| 国产黄色片在线观看| 成人黄色大片在线免费观看| 亚洲激情另类| 黄色av片三级三级三级免费看| 日韩精品一区二区三区swag| 亚洲电影观看| 老司机午夜网站| ww亚洲ww在线观看国产| 国产精品人妻一区二区三区| 97在线视频观看| 999久久久国产精品| 玖玖爱在线精品视频| 欧美日韩一区二区欧美激情| 丁香花电影在线观看完整版| 天天综合色天天综合色hd| 成人一区二区三区| 亚洲在线观看av| 国产69久久精品成人看| 女人香蕉久久**毛片精品| 国产一二三四五区| 亚洲精品一线二线三线无人区|