首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux Thunk打字本

Redux Thunk打字本
EN

Stack Overflow用户
提问于 2022-06-09 13:09:02
回答 1查看 56关注 0票数 0

我正在尝试创建一个thunk,它过滤一个基本数组并将数据传递到筛选后的数组中,但是当我在useEffect中执行调度时,我总是会收到一个错误。

写到:“类型的参数”(分派: ThunkDispatch,getState: IRootState) => void‘不能分配给’AnyAction‘类型的参数。

我不知道该怎么做,我遵循了redux文档,但仍然没有工作。

Thunk动作-创建者:

代码语言:javascript
复制
export const filterServices = () => {
  return (
    dispatch: ThunkDispatch<IRootState, void, Action>,
    getState: IRootState
  ) => {
    const category = getState.filters.category;
    const subcategory = getState.filters.subcategory;
    let result = getState.services.services;

    result =
      category === 'All categories'
        ? result
        : result.map((e: any) => e.category === category);
    result =
       subcategory === 'All Subcategories'
        ? result
        : result.map((e: any) => e.subcategory === subcategory);

    dispatch(getfilteringServices(result));
  };
};

操作接口

代码语言:javascript
复制
export interface IFilteringServices {
  type: ActionType.FILTERING_SERVICES;
  payload: IService[];
}


export type Action =
  | IGetServices
  | IAddToCart
  | IRemoveFromCart
  | IFilteringServices
  | IUseFilters;

RootState接口:

代码语言:javascript
复制
export type IRootState = typeof storeState;

调度

代码语言:javascript
复制
useEffect(() => {
    dispatch(filterServices());
  }, []);
EN

回答 1

Stack Overflow用户

发布于 2022-06-10 08:04:09

,我改变了分离钩子,一切都开始工作了:

代码语言:javascript
复制
export const useAppDispatch = () =>
  useDispatch<ThunkDispatch<IRootState, unknown, AnyAction>>();

也更改了getState调用,我忘了它是一个函数:

代码语言:javascript
复制
(dispatch: Dispatch<Action>, getState: () => IRootState) => {

const state = getState().services.filteredServices

...other code
}

我用过滤方法更改了这段代码,但是关于钩子和getState的信息可能会帮助某人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72560877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档