我有以下問題:我有一個方法可以在我的 Grids 組件中回傳一個多維陣列。我想將重新計算的任何多維陣列存盤在單獨的串列中。問題是當我useState()以這種方式使用我的宣告時
const [listGrid,setListGrid] = useState<any[]>([])
只有當前狀態元素重復保存在陣列串列中。按照感興趣的部分代碼:
const [listGrid,setListGrid] = useState<any[]>([]);
const grid= initGrid(); //initialise a new grid.
const disableButtonHandler = ():void => {
const cloneGrid =[...grid]
console.log(cloneGrid===grid)//are no the same!!
setListGrid(prevListGrid=>[...prevListGrid,cloneGrid]);
};
這是我的串列的快照,其中保存了網格:

所以,基本上,所有存盤的陣列listGrid都是相同的,我想存盤我的計算串列的任何更改。
我能做些什么錯呢?提前致謝。
uj5u.com熱心網友回復:
矩陣由陣列陣串列示,當您復制包含陣列時,包含的陣列仍然相同。基本上,cloneGrid[i] === grid[i]對于0 <= i < grid.length.
您可以通過執行以下操作來解決此問題:
const cloneGrid = grid.map(row => [...row]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/337021.html
標籤:javascript 反应 反应钩子
