NgRx父选择器静态参数



假设我有一个接收道具的选择器:

export const selectTaskById = createSelector(
selectCoreState,
(state, props: { id: TaskKey }) => state?.tasks[props.id] || null
);

然后我有另一个选择器,它不接收道具,但它需要使用上面选择器的数据,通过提供硬编码id:

export const selectGeneralTask = createSelector(
selectTaskById, // -- Here I want to pass hardcoded props with {id: 'generalTask'}
(state) => state
);

我在SO和互联网上搜索了一下,没有找到一个如何实现这一目标的解决方案。

在底线上,我想找到一种方法,怎样才能做出一种"抽象";在选择器上,而不需要知道";id";在每一个我需要特定任务信息的地方。

更新
就目前而言,我找到的唯一解决方案如下:
我又添加了一个选择器:

export const selectRootState = (state: AppState) => state;

然后,将其用于selectGeneralTask:

export const selectGeneralTask = createSelector(
selectRootState,
(state) => selectTaskById(state, {id: 'generalTask'})
);

如果有人有其他方法来解决它,我会很高兴听到它。

您可以创建一个工厂选择器:

export const selectTaskById = (id) => createSelector(
selectCoreState,
(state) => state?.tasks[id] || null
);
export const selectGeneralTask = createSelector(
selectTaskById('generalTask'),
(state) => state
);

最新更新