2 回答

TA貢獻1858條經驗 獲得超8個贊
解決方法是將其轉換為功能更新:
setFormData(formData => ({
...formData,
firstName: data.firstName,
lastName: data.lastName,
email: data.email,
}));
那么你不需要放入formData依賴數組。

TA貢獻1827條經驗 獲得超9個贊
它會進入無限循環,因為每當您使用 setFormData 更新表單值時,它都會觸發渲染,而渲染又會再次調用 useEffect 方法。發生這種情況是因為您每次使用 setFormData 都在設置一個新對象。
讓 obj={a: 1,b:2}
obj==={...,a:1} //假
即它們不相同,因此像這樣設置 setFormData 將始終導致重新渲染并導致無限循環。這只是 useFormData 如何在幕后比較數據的基本說明。所以要解決這個問題,請對所有不同的事物使用不同的 useState 示例
const[firstName, setFirstName]= useState('')
常量[lastName, setLastName]= useState('')
const[email, setEmail]= useState('')
等等..
或者如果有大量數據,則使用 useReducer 方法,有很多博客,您可以從中瀏覽 useReducer 方法
添加回答
舉報