我正在學習 React,并從通過useStateHook 以 CRUD 形式處理狀態開始。像這樣的東西:
const [data, setData] = useState({});
其中data是包含表單狀態的物件,他的道具是輸入的值。
我有兩個擔憂:
1) 不必要的渲染。 如果輸入更改(onChange 或 onBlur 事件)我通過典型的 handleChanged 函式更新狀態,例如:
const handleChanged = (e) => {
setData(...data, [e.target.name]: e.target.value)
});
表單是否僅呈現特定更改的輸入或整個表單(所有輸入)?如果是針對所有輸入,如何避免這種情況?
2)陣列和useState。
如果我沒有一個資料物件,而是有一個資料物件陣列,例如。在可編輯的表格中,如何useState處理每個陣列元素?我已經搜索了示例,但它們都是針對單個物件的。
uj5u.com熱心網友回復:
第1部分:
根據以下定義:
每當組件的狀態發生變化時,React 都會安排一次渲染。
useState僅更改發生更改的組件。我相信,在您的情況下,會發生重新渲染。
既然已經發明了輪子,為什么還要重新發明呢?
如果你關心表單,你應該探索這個庫: https ://react-hook-form.com/
此外,您將能夠在https://react-hook-form.com/的Isolate Re-renders部分正確可視化它
第2部分:
您可以使用useState來存盤一個Array并且Array可以是一組Objects.
為了從 Array 中渲染組件,您可以進一步使用map函式。
或者,如果您想簡單地訪問資料,那么您可以使用索引值來訪問物件。
我希望這是有道理的。
如果您關注的整個代碼片段被共享,解釋可能會更好。
問候, 沙米爾·烏丁
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474150.html
