成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

事半功倍!這5個React應用程序庫不要錯過……

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

編輯 搜圖或許你一直在從頭開始構建React應用程序,這當然無可厚非。但當你遇見了今天要介紹的這些庫,一定會感嘆相見恨晚!

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

[[320552]]

在這里所創(chuàng)建的大多數應用程序,無論是用于工作還是個人項目,都是從相同的庫開始的。

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

所以千萬不要錯過呀~

1. Formik

面對現(xiàn)實吧,幾乎所有的網絡應用程序都有表單,這是一件很棘手的事情。

對于用戶來說,沒有什么比表單不能正常工作,或在錯誤驗證后重置,再次輸入所有信息更讓人沮喪的了。表單正確,是網絡應用程序中讓用戶擁有良好體驗的關鍵。

那就意味著:

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

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

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

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

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

2. 測試庫

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

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

涉及到測試React應用程序時,有一個黃金標準:testing-library/react,也稱為react-testing-library。它已經內置在create-react-app中,所以入門就變得很簡單啦。

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

什么意思?下面用一個實際的例子來說明。

在這個示例中,筆者為一個簡單的注冊表單編寫了一個測試。它要求用戶提供姓名、電子郵件和密碼。這些都是必填字段,如果省略了任何一項,那么表單應該在提交時顯示一個錯誤。

  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)注冊表單。

之后輸入姓名與郵箱。

之后點擊提交。

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

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

3. CSS-Modules和Classnames

當筆者開始一個新的React項目時,通常會選擇CSS-Modules。create-react-app中內置了支持,很容易上手。

當然,可以通過遵循BEM來避免依賴,但是需要學習如何使用BEM。CSS-Modules提供了可預測的、范圍有限的、清晰的CSS。

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

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

有了classnames,可以進行簡化,然后變成這樣:

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

甚至可以將它與CSS-Modules相結合:

  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

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

構建一個基于鼠標單擊打開或關閉的組件確實非常簡單。但與許多前端任務一樣,困難的不僅僅是構建組件。

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

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

[[320553]]

圖源:unsplash

當筆者開始一個新的React應用程序時,總會安裝這些庫,省時省力,豈不美哉?

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

測試庫 有助于編寫耐用的集成測試,為應用程序提供信心。

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

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

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

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2013-04-22 09:21:43

2023-04-11 16:31:10

開發(fā)React 庫Web

2021-02-06 10:27:51

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

2023-11-27 19:22:24

Python庫編程語言

2020-10-14 15:05:02

React應用程序

2021-05-05 10:06:09

React應用程序微前端

2020-08-17 17:22:34

VSCode插件開發(fā)編碼

2022-05-20 15:27:41

React工具Vue

2020-12-16 15:37:19

Python編程語言開發(fā)

2021-10-28 19:21:56

GolangGo變量

2021-07-14 17:39:46

ReactRails API前端組件

2019-08-28 07:28:13

React應用程序代碼

2020-10-10 10:30:31

JavaScript開發(fā)技術

2014-08-28 14:09:40

AppAndroid Wea應用

2021-09-22 09:14:33

Linux編程Visual Stud

2020-11-17 16:22:45

開源工具報表

2010-01-27 17:36:24

C++程序庫

2013-08-15 13:29:52

Moco程序庫設計

2020-04-17 10:32:59

在線軟件文檔工具代碼

2010-01-14 09:43:26

C++標準程序庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av一二三区| 国产一区二区免费电影 | 欧美中文一区 | 国产1区2区3区 | 我我色综合| 91麻豆精品国产91久久久久久 | 一区二区三区视频在线观看 | 欧美一级片在线 | 日韩久久久久久 | 日韩在线中文字幕 | 国产99视频精品免费播放照片 | 91视频电影| 黄色欧美视频 | 精品国产乱码一区二区三 | 久久久亚洲一区 | 欧美亚洲一区二区三区 | 中文字幕一区二区三区四区五区 | 爽爽免费视频 | 国产精品久久久久久久免费大片 | 免费av毛片 | 宅女噜噜66国产精品观看免费 | 国产日韩精品在线 | 国产无套一区二区三区久久 | 中文字幕在线电影观看 | 97人人爱| 亚洲国产精品一区二区第一页 | 成人国产a | 久久久不卡网国产精品一区 | 一区 | 国产主播第一页 | 一区二区三区四区视频 | 欧美中文字幕在线 | 手机三级电影 | 岛国av在线免费观看 | 毛片久久久 | 伊人狠狠干 | 狠狠狠色丁香婷婷综合久久五月 | 亚洲一区二区三区在线播放 | 亚洲精品久久久久久久久久久 | 成人在线精品视频 | 青青草国产在线观看 |