我想在狀態中存盤一些資料。問題是我必須一個一個地添加它動態調度一個動作。我嘗試了兩種解決方案:Record<string, number>和Map<string, number>.
Record 在 reducer 方法中拋出一個錯誤,表明該物件不可擴展。
使用 Map 我有一個不同的問題: Detected unserializable state at "airplanes.aircraftRotation"
也許我在實施這些方法時做錯了什么:
export interface State extends EntityState<Airplane> {
error?: any;
aircraftRotation: Map<string, number>;
}
export const initialState: State = airplanesAdapter.getInitialState({
error: null,
aircraftRotation: new Map<string, number>(),
});
export default State;
和減速機:
function updateAircraftRotation(state: State, aircraftCallSing: string, rotation: number): State {
state.aircraftRotation.set(aircraftCallSing, rotation);
return state;
}
有人可以給我一些提示如何正確執行此操作嗎?
uj5u.com熱心網友回復:
我認為您沒有正確地將您的商店退回到減速機中。由于您使用的 Map 物件可能不是不可變/可序列化的,因此這可能會導致此處提出的問題。
當 ngrx store state 包含 Map 時,為什么無法識別對此 Map 的更改?
你可能想在你的減速器中嘗試這樣的事情。在何處“克隆” Map,新副本將允許資料可序列化?
function updateAircraftRotation(state: State, aircraftCallSing: string, rotation: number): State {
let aircraftRotation = new Map(state.aircraftRotation)
aircraftRotation.set(aircraftCallSing, rotation);
return {...state,aircraftRotation } ;
}
uj5u.com熱心網友回復:
AMap不是完全可序列化的值,因此 RTK 將始終對此發出警告。
這里更好的方法是使用普通的 JS 物件,特別是因為你Map只有字串鍵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322912.html
標籤:javascript 有角的 打字稿 还原 ngrx
上一篇:NGRX調度的無限回圈
下一篇:ARP欺騙與中間人攻擊
