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

React組件開發中常見的陷阱

開發 前端
在React中編寫組件時有很多陷阱。如何合理的避免這些常見錯誤,可以讓我們的程序更加健壯,也能使我們的編程能力獲得提高。

React作為使用最廣泛Web前端開發之一,在Web開發領域越來成熟和穩固。其新版本發布的Hook API/concept使得組件更加便捷易用。雖然如此,React開發中仍然有很多的陷阱值得每一位React擁躉關注。

陷阱一:使用函數式組件

在React中可以使用兩種方法編組件函數式和類組件。函數式組件方式比較直觀,所以被廣為采用,但是函數式組件卻存在問題:不支持Hook函數和沒有內部state狀態屬性。

錯誤代碼示例:

  1. function Chongchong(props) {  
  2. return <h1>Hello, {props.name}</h1> 

問題分析:

函數式組件,不支持Hook函數,比如在組件加載后去請求API獲取數據就不可能。

解決方案:

使用類組件,可以獲得Hook和狀態的加權。

陷阱二:錯誤的使用useState

在React中最重要的理念是對狀態的處理,可以通過其控制整個數據流和狀態渲染。當需要重新渲染樹的時候,都是狀態變化先行。

通過useState Hook,可以在功能組件中定義狀態。這是處理狀態簡潔、方便的方法。因為如此,常常被濫用。

實例中,假設有兩個按鈕,一個按鈕用來計數,另一個按鈕用來發送計數或者或觸發操作。但是,當前編號永遠不會顯示在組件內。僅當單擊第二個按鈕時才需要該請求。

錯誤代碼示例:

問題分析:

在做出反應時,每個狀態的變化都將迫使該組件及其子組件重新呈現。但是上面的代碼中,由于未在渲染部分中使用該狀態,因此每次設置計數器時,都會進行不必要的渲染,這會影響性能,還可能會產生副作用。

解決方案:

如果要在組件內部使用變量,變量值要在渲染前后保持,不強制重新渲染,則可以使用useRefHook。它會保留該值,不強制重新渲染組件。

陷阱三:用router.push代替鏈接

假設要編寫一個按鈕,然后單擊該按鈕,需要用戶重定向到另一個頁面。由于它是,因此此操作將是一種客戶端路由機制。因此,將需要某種庫來執行此操作。在react中,最常用的是react-router:

錯誤代碼示例:

問題分析:

對于大多數用戶來說這可以正常工作,但其可訪問性仍然存在問題。按鈕根本不會被標記為鏈接到另一個頁面,這使得屏幕閱讀器幾乎無法識別按鈕。可能無法在新標簽頁或窗口中打開。

解決方案:

在任何可能的情況下,跳轉鏈接都應該用組件或常規的標簽。

 

陷阱四:通過useEffect處理動作

React引入的最常用最好用Hook之一是"useEffect"Hook。該Hook允許處理與之相關prop或state發生變化的動作。很好用,但經常被誤到可能不需要的地方。

一個組件場景:組件獲取項目列表并將其呈現給dom。另外,如果請求成功,將調用"onSuccess"函數,該函數作為道具傳遞給組件。

錯誤代碼示例:

 

問題分析:

上述代碼使用了兩個useEffect Hook,第一個Hook處理初始渲染時的API調用,第二個Hook調用onSuccess函數:假設沒有加載,沒有錯誤但狀態為數據時,必須已成功調用。

這是正確的,并且可能永遠不會失敗。這樣,也失去了動作和需要調用的功能之間的直接聯系。無法保證這種情況只會在獲取操作成功后才會發生。

解決方案:

最直接的方法是將"onSuccess"功能設置為在調用成功的實際位置:

現在一目了然,確切地表明了是在api調用成功的情況下onSuccess。

陷阱五:多個事件混用

什么時候該將一個組件拆分為幾個較小的組件?如何構造組件樹?在使用基于組件的框架時,每天都會出現所有這些問題。但是,設計組件時常見的錯誤是將兩個用例組合到一個組件中。下面實例假設要顯示標題為移動設備上的BurgerButton按鈕或桌面屏幕上的標簽。

錯誤代碼示例:

問題分析:

通過這種方法,為HeaderInner組件設置兩種狀態。這會使得在其他地方測試或重用該組件變得更加困難。

解決方案:

分清楚事件,是要設置Header,Tabs或者BurgerButton,不要將兩件事混用。

陷阱六:useEffectHook處理多個事件

例如,假設有一個組件以某種方式從后端獲取一些數據,并且還根據當前位置顯示Breadcrumbs。

錯誤代碼示例:

問題分析:

有兩個用例,即"數據獲取"和"顯示Breadcrumbs"。兩者都用useEffectHook更新。更改useEffect時,將運行單個Hook。問題是,當位置更改時,也會調用該函數,這會帶來副作用。

解決方案:

拆分效果,確保它們僅用于一種效果,這樣的副作用也會消失。

總結

在React中編寫組件時有很多陷阱。如何合理的避免這些常見錯誤,可以讓我們的程序更加健壯,也能使我們的編程能力獲得提高。

 

責任編輯:趙寧寧 來源: 蟲蟲搜奇
相關推薦

2014-05-04 16:39:49

開源項目開源產品

2019-10-30 16:03:48

JavaJava虛擬機數據庫

2010-10-26 10:16:36

求職

2010-01-26 15:32:43

Scala用法錯誤

2009-06-30 16:03:00

異常Java

2022-10-10 09:00:35

ReactJSX組件

2016-11-29 08:25:07

iOS軟件開發者數據可視化

2019-03-21 14:18:38

iOS開發優化原因

2012-08-22 10:44:08

軟件開發

2019-07-20 23:30:48

開發技能代碼

2019-07-22 10:42:11

React組件前端

2019-10-11 15:46:29

編程語言JavaJavaScript

2023-12-25 08:25:42

AndroidHook應用程序

2009-07-02 11:06:57

JSP預定義變量

2021-03-10 09:44:20

微信小程序APP

2021-12-27 08:58:28

低代碼開發數據安全

2022-03-11 10:01:47

開發跨域技術

2020-04-20 17:15:32

Java開發代碼

2017-01-23 08:41:43

云計算

2025-07-02 07:05:00

多線程Java開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美a在线 | 亚洲成人精品 | 亚洲一区二区三区在线视频 | 日韩在线不卡 | 久久久入口 | 国产精品成人久久久久 | 天天av综合 | 麻豆久久久久 | 国产精品18hdxxxⅹ在线 | 中文字幕在线观看国产 | 国产一在线| 国产一区高清 | 亚洲www.| 伊人久久综合 | 在线一区视频 | 国产精品欧美一区二区三区不卡 | av网站免费在线观看 | 国产精品美女久久久久久久网站 | 日本成人三级电影 | 亚洲综合色视频在线观看 | 91精品国产91久久综合桃花 | 国产精品久久久久久久 | 欧美性网| 日本精品裸体写真集在线观看 | 国产精品色 | 亚洲不卡在线视频 | 羞羞的视频免费看 | 天天综合永久入口 | 无码一区二区三区视频 | 久久伊人在 | 玖玖色在线视频 | 一级欧美| 精品久久香蕉国产线看观看亚洲 | 日本小电影在线 | 日韩精品专区在线影院重磅 | 中文字幕在线播放第一页 | 妹子干综合 | 久久精品一区 | 久久亚洲国产精品 | 国产成人免费在线 | 久久综合激情 |