我想從默認值開始實體化不同的地圖,比如這個
const defaultMap: MapType = {
val1: 0,
val2: 0,
};
然后我會遍歷一個陣列來為這些不同的地圖設定值:
const useMaps = () => {
useEffect(() => {
let map1 = defaultMap;
let map2 = defaultMap;
let map3 = defaultMap;
console.log(defaultMap)
[val1, val2].forEach((arrayVal) => {
map1[arrayVal] = 1
map2[arrayVal] = 2
map3[arrayVal] = 3
});
*set some states using map1, map2, map3
})
但是從 console.log(defaultMap) 中,記錄的值不會回傳
{
val1: 0,
val2: 0,
};
為什么常量映射會發生變化,我該如何解決?
uj5u.com熱心網友回復:
您的所有地圖變數都參考相同的默認地圖物件。您需要實際克隆默認映射,因此您的每個映射變數都參考它們自己的默認映射的獨立副本。
對于淺拷貝,請執行以下操作:
let map1 = {...defaultMap};
對于深層副本,如果需要,請執行以下操作:
let map1 = JSON.parse(JSON.stringify(defaultMap));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528178.html
下一篇:從嵌套字典中的現有對生成鍵:值對
