技術問答
技術文章
iT 徵才
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
8
0
佛心分享-IT 人自學之術
【現在學React還來得及嗎?】30天Takeaway分享
系列 第
8
篇
【Day8】State2
16th鐵人賽
react
haruowang
2024-08-12 08:50:30
464 瀏覽
分享至
Takeaway
渲染時傳回的JSX被形容為是Snapshot快照,會固定State的值
React會等事件處理函數運作完才更新State,這被稱作Batching批處理
寫三個setNumber(number + 1),輸出的還是以1為遞增
寫三個setNumber(n => n + 1),輸出的才會是以3為遞增
n => n + 1:被稱為Updater function更新函數
更新函數跟組件一樣應該要是純函數,都會調用兩次做測試
更新函數在寫非同步時容易用到
幫更新函數命名:使用setter的駝峰。如setPageIndex(pi => pi * 2);
在替換State後更新State,兩段程式碼都能正常運行;在更新State後替換State,只保留在後的替換結果
useState裡的內容應被視為不可變,請搭配setter觸發渲染
State要替換的值不只一個時,setter裡可以放物件,有時會用到展開語法
展開語法的本質其實是淺拷貝,和Object.assign一致
淺拷貝:原型鏈相同,不像深拷貝只複製結構。白話來說,淺拷貝的物件和原物件不同,但指向的內容物相同,即Call by reference傳址
深拷貝實作則要用到JSON方法、2022年推出的structuredClone()或lodash的cloneDeep
改三欄input的值時,如果用[e.target.name]: e.target.value,就可以只寫一個事件處理函數,而不用分成email: e.target.value等
留言
追蹤
檢舉
上一篇
【Day7】State1
下一篇
【Day9】State3
系列文
【現在學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
組
累計文章數
19855
篇
完賽人數
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
熱門問題
防火牆fortinet只開放line 問題
Gem如何找到該功能?!我是Gemini付費使用者
中華電信光纜當骨幹...SWminigbic無法正常使用
我在做 packet tracer 的題目,想請問一下該怎麼做
dhcp 在client 端機碼設定的問題
熱門回答
防火牆fortinet只開放line 問題
中華電信光纜當骨幹...SWminigbic無法正常使用
我在做 packet tracer 的題目,想請問一下該怎麼做
dhcp 在client 端機碼設定的問題
熱門文章
Agentic AI 開發實戰:我是如何設計 “Code + LLM” 混合架構,解決 AI品質不穩的問題?
ISC2 CC 證照考試筆記和影片
VScode 開發應用系統專案(10) - Spring boot MVC 應用系統設計(1)
【資料治理實戰回憶錄】04. 拆解元數據 (下):讓資料「用起來」
[gem5] 該怎麼編譯以及運行 gem5 ?
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}