如何仅从商店获得最后值?
这是我的选择器的使用: -
private loadTree() {
this.loading = true;
this.store.select(transitionListSelector).pipe().subscribe(data => {
console.log(data);
data.map(item => {
console.log(item);
this.treeItems.push({ label: item.name, leaf: false, ...item });
})
this.loading = false;
});
}
这是我的选择器: -
export const transitionListSelector = createSelector(
topicModuleSelector,
(s) => s.transitionListState.transition
);
这是我的还原器: -
export const transitionListReducer = createReducer(
initialTopicModuleState.transitionListState,
on(actions.listTransitionAction, (s) => {
return { ...s, transition: [] };
}),
on(actions.listTransitionSuccessAction, (s, { transition }) => {
return { ...s, transition };
})
);
export function transitionListReducerMap(s: any, a: Action): any {
return transitionListReducer(s, a);
}
这是我的主题模块化: -
export interface TopicModuleState {
transitionListState: TransitionListState;
}
export interface TransitionListState {
transition: Transition[];
}
export const initialTopicModuleState: TopicModuleState = {
transitionListState: {
transition: []
}
};
如您在控制台中所见,我将获得2个结果,第一个是空数组,第二个是实际结果。我只需要实际的结果。
This is use of my Selector:-
private loadTree() {
this.loading = true;
this.store.select(transitionListSelector).pipe().subscribe(data => {
console.log(data);
data.map(item => {
console.log(item);
this.treeItems.push({ label: item.name, leaf: false, ...item });
})
this.loading = false;
});
}
This is my selector:-
export const transitionListSelector = createSelector(
topicModuleSelector,
(s) => s.transitionListState.transition
);
This is my reducer:-
export const transitionListReducer = createReducer(
initialTopicModuleState.transitionListState,
on(actions.listTransitionAction, (s) => {
return { ...s, transition: [] };
}),
on(actions.listTransitionSuccessAction, (s, { transition }) => {
return { ...s, transition };
})
);
export function transitionListReducerMap(s: any, a: Action): any {
return transitionListReducer(s, a);
}
This is my TopicModuleState :-
export interface TopicModuleState {
transitionListState: TransitionListState;
}
export interface TransitionListState {
transition: Transition[];
}
export const initialTopicModuleState: TopicModuleState = {
transitionListState: {
transition: []
}
};
As You see in console I am getting 2 result first one is empty array and second is actual result. I want only Actual result.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
初始化商店时,您的选择器会获取初始值。如果跳过初始值,则可以使用跳过操作员。
而且,我认为当列表TransitionAction派遣时,您不应该设置一个空数组。创建ListTransitionActionFail操作,并使用此操作设置一个空数组。然后将加载状态移至NGRX状态。
When the store is initialized, your selectors get initial values. If you skip the initial value, you can use the skip operator.
And, I think you shouldn't set an empty array when your listTransitionAction is dispatched. Create listTransitionActionFail action and use this action to set an empty array. Then move your loading state to ngrx state.