微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Typescript中的Redux验证中间件

如何解决Typescript中的Redux验证中间件

我希望实现redux-thunk以便在我分派可能会更改该有效状态的特定操作时处理某些表单验证。

我已经这样实现了我的actionCreator:

import { dispatchTypes,ActionTypes } from "./Actions";
import { State } from "./State";
import { Validation } from "../models/Validation";

export const runFiltersValidation = () => (dispatch: dispatchTypes,getState: ()=> State) => {
    const { searchText,rating } = getState()?.filters

    const validation: Validation = {
        isTextValid: searchText ? true: false,isratingValid: rating ? true : false
    }

    dispatch({ type: ActionTypes.SetValid,value: validation })
}

我的中间件:

import { ActionTypes,Actions,dispatchTypes } from "./Actions";
import { Middleware,dispatch,MiddlewareAPI } from "redux";
import { runFiltersValidation } from "./ActionCreators";
import { State } from "./State";

const typesRequiringValidation = [
    ActionTypes.ResetFilters
];

const actionTypeContains = (types: ActionTypes[],type: ActionTypes): boolean =>
  types.indexOf(type) !== -1;

const ValidationMiddleware: Middleware = (
  api: MiddlewareAPI<dispatchTypes,State>
) => (next: dispatch<Actions>) => <A extends Actions>(action: A) => {
  const result = next(action);

  if (actionTypeContains(typesRequiringValidation,action.type)) {
    api.dispatch(runFiltersValidation());
  }

  return result;
};

export default ValidationMiddleware;

尝试从中间件中调用过滤器动作创建者时遇到类型错误。我不知道我是否正在使用其他版本的thunk。

Error from console

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。