我正在通過動態添加表單欄位來更新表單中的狀態但是這個錯誤即將出現我已經嘗試過應該發生的是如果我愿意,應該在單擊時將更多欄位添加到每個子欄位
const addExperience = () => {
let temp = Object.assign({}, form);
temp.experience.push({
company: "",
position: "",
startDate: "",
endDate: "",
description: "",
});
setForm(temp);
}
這是表格
const [form, setForm] = useState({
name: "adarsh raj",
email: "[email protected]",
phone: "83404dvsdsd",
address: "patel chowk",
city: "deoghar",
education: [
{
school: "dav ",
major: "intermediate",
GPA: "8.12",
},
],
experience: [
{
company: "venturepact llc",
position: "associate software developer",
startDate: "dd-mm-yyyy",
endDate: "dd-mm-yyyy",
description: "description",
},
],
projects: [
{
projectName: "project name",
projectDescription: "project description",
},
],
skills: [
{
skillName: "your skill name",
},
],
});
uj5u.com熱心網友回復:
這樣的代碼應該可以作業。但是要測驗,您可以嘗試以下語法:
const addExperience = () => {
let temp = Object.assign({}, form);
temp.experience = [
...temp.experience,
{
company: "",
position: "",
startDate: "",
endDate: "",
description: ""
}
];
setForm(temp);
};
uj5u.com熱心網友回復:
Object.assign(target, source) 只是淺拷貝。
useState回傳值是不可變的;
參考下面的演示
var x = new Array(10).fill(0);
Object.freeze(x);
x.push(11) // same error
您可以通過deep copying或重新分配first layer.
因為使用的是淺拷貝,所以只能分配第一層。如果問題屬性出現在第二級,則無法解決。因此,不推薦使用這種方法,推薦使用深拷貝。
let temp = JSON.parse(JSON.stringify(form));
let temp = lodash.cloneDeep(form);// need install lodash
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/339663.html
標籤:javascript 反应 前端
下一篇:CSS:使用類名切換類時出錯
