2 回答

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

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