你能幫我嗎,我添加了添加后編輯日期的功能。我從 TraningApp 獲得 TraningForm 中的 obj。我想把這個物件放入“useState”,但由于某種原因,這一刻被忽略了。雖然這個物件可能在道具中,我可以安全地得到它:

你能向我解釋我做錯了什么嗎?
代碼:https ://github.com/tati-simonenko/22
uj5u.com熱心網友回復:
您將obj屬性作為初始狀態傳遞:useState(obj)。因此form狀態只設定一次。
const [form, setForm] = useState(obj);
form每當obj屬性更改時更新狀態。
const [form, setForm] = useState(obj);
useEffect(() => setForm(obj), [obj]);
uj5u.com熱心網友回復:
您的代碼中有兩個問題。
TraningForm形式應隨時obj更新。需要在useEffect下面添加一個鉤子。
useEffect(() => {
setForm(obj);
}, [obj]);
- 在
EditObj方法上有一個錯誤。它應該...item代替...prevTraining.
const EditObj = (obj) => {
setTraining((prevTraining) =>
prevTraining.map((item) => {
if (item.id == obj.id)
return { ...item, date: obj.date, passed: obj.passed };
return item;
})
);
};
代碼沙箱
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/419529.html
標籤:
