技術問答
技術文章
iT 徵才
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
11
0
佛心分享-IT 人自學之術
【現在學React還來得及嗎?】30天Takeaway分享
系列 第
11
篇
【Day11】State managing 2
16th鐵人賽
react
haruowang
2024-08-15 11:51:10
603 瀏覽
分享至
Takeaway
不應同時為true的state不要同時宣告
比起用嵌套一層包一層,讓每個節點「扁平化」,定義各自的子節點會更好
用到Props時要把State直接拿掉,否則會無法更新
要列出「所選擇元素」的State時,不要直接select原元素,要select原元素的ID才不會導致重複!
includes()需要線性時間,萬一資料量大性能會差。可使用Set的has()取代
要先useState( new Set() );
要看Set的長度是用size而不是length
要用new Set複製一份State出去再做增刪,不然會mutation
狀態提升:希望兩個組件的狀態保持連動,如一開一合。所以把State擺去父組件,再用Props傳State下來
狀態提升三步驟:移除子組件的State → 寫好父組件的內容 → 設定父組件裡的子組件的狀態
狀態提升的缺點:資料傳遞路徑又要改。替代方案如Redux
可控組件:讓Props或State成為單一資訊來源;不可控組件:經由DOM
單一資訊來源(SSOT):每個狀態都有唯一的資料來源
React Hook Form和Formik:幫助製作React表單的套件。核心是不可控組件,解決可控一直重渲染的效率問題。但兩者都仍能做到可控。
留言
追蹤
檢舉
上一篇
【Day10】State managing 1
下一篇
【Day12】State managing 3
系列文
【現在學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
組
累計文章數
19847
篇
完賽人數
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替代方案?
Dell or Asus 伺服器,哪牌比較好?
將硬碟上的 EFI 分割區複製到固態硬碟後,ARM 架構的 Ubuntu Server 無法啟動
iT邦幫忙如何搜尋 關鍵字?
SSLVPN 轉 IPSEC VPN 的問題
熱門文章
c++的.h和cpp,放在相同目錄下好,還是頂層就用include,src分開好? [搬運/問答]
人工智慧模型 LLM (單一模型) 與 人工智慧代理 AI Agent(人工智慧代理)是什麼?兩者之間的關鍵差異?
別再只是做報表了,真正的人資資料分析是這樣做的
你的產品用了多少開源軟體?如何掌握潛在漏洞與風險?
AI 音樂創作指令(Prompt)深度指南:解鎖主流AI 音樂生成工具的全部潛力
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}