首页 > 解决方案 > 如何在 ActionReducerMap 中使用 CreateReducer 方法目的?

问题描述

我想通过 CreateReducer 方法创建减速器,但我不明白为什么它不起作用。

我尝试改变状态类,但我认为这不是路要走。

export const reducers: ActionReducerMap<State> = {
  productsReducer: createReducer(initialState, on(ProductListActions.toggleImage), state => )
};

'(state: any) => any' 类型的参数不能分配给 'On' 类型的参数。类型 '(state: any) => any' 缺少类型 'On' 的以下属性:reducer、types

标签: angularngrx

解决方案


因为你没有正确使用括号。后拆下支架,toggleImage在功能后使用。如果您更多地使用缩进,您可以看到问题。而且你还必须返回一个状态,因为 reducer 是一个函数,它将一个动作应用到一个状态,然后返回新的状态。

export const reducers: ActionReducerMap<State> = {
  productsReducer: createReducer(
    initialState,
    on(ProductListActions.toggleImage, state => state) // <-- This ) is missing and removed after toggleImage
  )
};

除此之外,您还需要将它包装到另一个函数中,否则 AOT 编译器会抛出错误。请参阅文档和这篇文章


推荐阅读