這是我正在處理的代碼部分,
這是我的鉤子
const [array, setArray] = useState(
JSON.parse(localStorage.getItem("notes")) ?? []
);
這就是功能,
const save = () => {
let info = one.current.value;
console.log(newIndex, " and ", info);
console.log("this si array element -> ", array[newIndex - 1]);
array[newIndex - 1] = info;
if (newIndex !== undefined) {
setArray((e) => {
return e.map((e1, i) => {
if (i 1 === newIndex) {
return [...e ];
}
});
});
}
};
info具有我要更新到的正確輸入并newIndex具有我要更新的元素的索引。
你能建議我在本節中需要更改什么嗎,這是上述功能的一部分,
setArray((e) => {
return e.map((e1, i) => {
if (i 1 === newIndex) {
return [...e ];
}
});
uj5u.com熱心網友回復:
要更新您的陣列,您不需要映射任何內容。您只需要復制陣列,在正確的索引處修改復制的陣列并回傳復制的陣列。React 會處理剩下的事情。
重要的是,您復制陣列,否則反應不會注意到變化。useState 只記住陣列在記憶體中的地址。只有通過具有新地址的新陣列,useState 才會真正觸發。
以下是我認為你的 save() 函式應該是什么樣子的看法:
const save = () => {
let info = one.current.value;
if (newIndex !== undefined) {
console.log(newIndex, " and ", info);
console.log("this is array element -> ", array[newIndex - 1]);
setArray((e) => {
let temp = [...e];
temp[newIndex - 1] = info;
return temp;
});
}
};
嘗試了代碼沙箱中的代碼,我認為這就是您想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/522595.html
