如何从ngrx存储中删除所有数据?
Posted
技术标签:
【中文标题】如何从ngrx存储中删除所有数据?【英文标题】:how to remove all data from ngrx store? 【发布时间】:2018-05-02 19:56:44 【问题描述】:我有一个包含数据数组的状态。完成某些操作后,我需要从该数组中删除所有数据。我使用 Angular 2。
const intialState: State =
someData: new Array<someData>()
;
export function stateReducer(state = intialState, action: StateActionList.StateActionList)
switch (action.type)
case StateActionList.REMOVE_DATA:
console.log(state.someData);
return
...state,
someData: new Array<someData>()
在我的组件中,我有以下代码:
this.store.dispatch(new StateActions.RemoveData());
在状态动作中:
export const REMOVE_DATA="REMOVE_DATA";
export class RemoveData implements Action
readonly type=REMOVE_DATA;
该代码不会为我返回从商店清除的数组 someData。该数组包含与之前相同的数据
【问题讨论】:
问题是什么? 此代码不起作用,存储不返回已清理的数组 状态转换是否执行?新状态的 someData 属性是否有一个空数组? action 被调度时你在哪里设置 store 为空? 我不明白为什么总是使用所有这些动作创建器来使事情复杂化。只需检查 action.type=='certain action string' 和 dispatch(type:'action',payload:foo),事情就会变得非常简单 【参考方案1】:尝试显式返回一个空数组作为新状态:
case StateActionList.REMOVE_DATA::
return
someData: []
;
【讨论】:
【参考方案2】:这看起来有点可疑
someData: new Array<someData>()
someData是变量名和类型?
见Declare an array in TypeScript
let arr1: boolean[] = [];
let arr2: boolean[] = new Array();
let arr3: boolean[] = Array();
let arr4: Array<boolean> = [];
let arr5: Array<boolean> = new Array();
let arr6: Array<boolean> = Array();
let arr7 = [] as boolean[];
let arr8 = new Array() as Array<boolean>;
let arr9 = Array() as boolean[];
let arr10 = <boolean[]> [];
let arr11 = <Array<boolean>> new Array();
let arr12 = <boolean[]> Array();
const state =
someData: new Array()
;
console.log('empty', state.someData)
state.someData.push('a')
console.log('contains "a"', state.someData)
const remove = () =>
console.log('constians "a"', state.someData);
return
...state,
someData: new Array()
const newState = remove()
console.log('empty', newState.someData)
【讨论】:
以上是关于如何从ngrx存储中删除所有数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 RxJS combineLatest 中删除瞬态事件与 NGRX 存储源 observable
如何从 ngrx 存储中获取数据并将其更新到 Observable 变量中?
NGXS store 中的数据是如何存储的? ngxs store 的内存限制是多少? ngxs 在浏览器中存储内存在哪里?