技術問答
技術文章
iT 徵才
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
20
0
佛心分享-IT 人自學之術
【現在學React還來得及嗎?】30天Takeaway分享
系列 第
20
篇
【Day20】Recap2
16th鐵人賽
react
haruowang
2024-08-24 07:38:00
455 瀏覽
分享至
使用時機
useState:邏輯簡單時做狀態管理。搭配展開語法、filter、map可分別實作增刪改
useReducer:1. 邏輯複雜時做狀態管理(譬如增刪改皆能操作的購物車);2. 當下一個狀態相依於上一個狀態時;3. 更新邏輯想複用於多個組件時
useContext:適合做主題切換、讀取帳戶資訊、i18n,亦可做為路由
useRef:通常用來操作DOM,或結合useEffect儲存上一個Props/State的值
useEffect:當Props/State改變時,會觸發包含在其中的動作(副作用)。通常用來和React之外的系統同步,如非同步請求fetch;有時會拿來寫定時器;依賴值設定成空陣列時,可以處理只有初始化當下的邏輯(相當於onMounted)
注意事項
Export是具名導出,導入時要搭配大括號,不像默認導出的Default彈性
{ JS }在JSX中只能作為文本或屬性
Props的默認值不能用0或null,和useState、createContext不一樣
Setter裡不能寫+=,要使用Immer才能處理mutation
切換布林時要用setState(!state)
如果兩個State總是連動,在State一起更新;如果兩個組件的State總是連動,使用狀態提升;如果兩個邏輯總是連動,可用自訂Hook
不要在State裡用Props
如果UI裡要列出「所選擇元素」,請select ID而非該元素本身
key值要標示在父組件裡,因為key值不是全域的
在事件處理函數或Effect裡讀取ref,才不會造成副作用
在組件使用ref屬性只會得到null值,除非使用forwardRef
ref和setter不用放進依賴陣列,因為每輪渲染都是相同的
不要把Effect Event傳給其他組件或Hook
留言
追蹤
檢舉
上一篇
【Day19】Recap1
下一篇
【Day21】Recap3
系列文
【現在學React還來得及嗎?】30天Takeaway分享
共
30
篇
目錄
RSS系列文
訂閱系列文
4
人訂閱
26
【Day26】R3F 2
27
【Day27】R3F 3
28
【Day28】React Leaflet 1
29
【Day29】React Leaflet 2
30
【Day30】React Leaflet 3
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19848
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
FortiGate SSLVPN替代方案?
AARQ 通訊協議是?
SSLVPN 轉 IPSEC VPN 的問題
Dell or Asus 伺服器,哪牌比較好?
Dell or Asus Storage 或NAS,哪牌比較好?
將硬碟上的 EFI 分割區複製到固態硬碟後,ARM 架構的 Ubuntu Server 無法啟動
iT邦幫忙如何搜尋 關鍵字?
sdray vigor2927 sslvpn ip設定問題
Qnap帳號於同一個IP反覆登入失敗.
熱門回答
FortiGate SSLVPN替代方案?
Qnap帳號於同一個IP反覆登入失敗.
Dell or Asus 伺服器,哪牌比較好?
將硬碟上的 EFI 分割區複製到固態硬碟後,ARM 架構的 Ubuntu Server 無法啟動
iT邦幫忙如何搜尋 關鍵字?
熱門文章
人工智慧模型 LLM (單一模型) 與 人工智慧代理 AI Agent(人工智慧代理)是什麼?兩者之間的關鍵差異?
c++的.h和cpp,放在相同目錄下好,還是頂層就用include,src分開好? [搬運/問答]
你的產品用了多少開源軟體?如何掌握潛在漏洞與風險?
別再只是做報表了,真正的人資資料分析是這樣做的
AI 音樂創作指令(Prompt)深度指南:解鎖主流AI 音樂生成工具的全部潛力
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}