在我的情况下,我的页面上有出版物,并且在滚动时需要加载其他出版物。问题是,当我的新出版物到达时,我丢失了旧出版物。
我的服务:
GetPiins(page: string): Observable<ListPiinsResponse> {
const limit = '8';
const piins = this.http.get<ListPiinsResponse>(
`${this.baseUrl}/piins/FollowerAndFriend`, {
params: {
limit: limit, page
}
});
return piins;
}
在我的 ngInit 组件中:
this.store$.dispatch(new PiinsFeatureStoreActions.LoadCurrentUserPiins('1'));
this.piins$ = this.store$.pipe(
select(PiinsFeatureStoreSelectors.selectAllPiinsFeatureItems),
filter(value => value !== undefined),
);
当我检测到滚动时我的方法:
onScroll() {
this.counterPage += 1;
this.store$.dispatch(new
PiinsFeatureStoreActions.LoadCurrentUserPiins(
String(this.counterPage)
));
}
这是在我的减速器中:
case ActionTypes.LOAD_PIINS_SUCCESS:{
const newPiins = featureAdapter.addAll(action.payload, {
...state, // I think here I need to concat this value
isLoading: false,
error: null
});
return newPiins;
}
只需合并两个数组
this.oldData= [ ...oldData, ...newData];
这意味着最初您的 oldData 必须是一个空数组。
public oldArray:SomeInterface[] = [];
应该做的伎俩
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句