使用动态 ngrx 选择器或 ngrx 操作以获得更好的性能?
use dynamic ngrx selector or ngrx action for better performance?
我会根据参数从存储中获取数据
我已经创建了选择器,但使用的是静态参数
export const selectSchedulingsTimes = createSelector(
schedulings,
(state: ISchedulesState, { time }: { time: string }) => {
let nowFormat = moment(time, 'HH:mm');
return state.schedulings.data.filter(elm => {
let before = moment(elm.tp_org_r, 'HH:mm:ss');
let after = moment(elm.tp_des_r, 'HH:mm:ss');
let checkifBetween = nowFormat.isBetween(before, after);
if (checkifBetween) {
return elm;
}
});
}
);
然后在我的组件中传递参数
export class LineSynopticComponent implements OnInit, AfterViewInit {
schedules$ = this.store.pipe(select(selectSchedulingsTimes, { time: '10:34' }));
ngOninit(){
}
因为 schedules$
没有在 ngOnOnit 中声明,如果我设置一个变量而不是 10:34
它会起作用吗?
是使用 reducer 发送回值更好还是选择器性能更好?
调用带参数的选择器没有问题。只需确保在调用选择器时参数存在即可。我会做这样的事情:
- 声明您的可观察对象。
调用您的参数可用的选择器,我使用了 onInit,因为这是您提供的唯一内容。
schedules$: Observable<any> // whatever type it should be returning
ngOninit(){
this.schedules$ = this.store.pipe(select(selectSchedulingsTimes, { time: '10:34' }));
}
我会根据参数从存储中获取数据
我已经创建了选择器,但使用的是静态参数
export const selectSchedulingsTimes = createSelector(
schedulings,
(state: ISchedulesState, { time }: { time: string }) => {
let nowFormat = moment(time, 'HH:mm');
return state.schedulings.data.filter(elm => {
let before = moment(elm.tp_org_r, 'HH:mm:ss');
let after = moment(elm.tp_des_r, 'HH:mm:ss');
let checkifBetween = nowFormat.isBetween(before, after);
if (checkifBetween) {
return elm;
}
});
}
);
然后在我的组件中传递参数
export class LineSynopticComponent implements OnInit, AfterViewInit {
schedules$ = this.store.pipe(select(selectSchedulingsTimes, { time: '10:34' }));
ngOninit(){
}
因为 schedules$
没有在 ngOnOnit 中声明,如果我设置一个变量而不是 10:34
它会起作用吗?
是使用 reducer 发送回值更好还是选择器性能更好?
调用带参数的选择器没有问题。只需确保在调用选择器时参数存在即可。我会做这样的事情:
- 声明您的可观察对象。
调用您的参数可用的选择器,我使用了 onInit,因为这是您提供的唯一内容。
schedules$: Observable<any> // whatever type it should be returning ngOninit(){ this.schedules$ = this.store.pipe(select(selectSchedulingsTimes, { time: '10:34' })); }