typescript中的Redux验证中间件
我希望实现redux thunk,以便在我分派可能更改有效状态的特定操作时处理一些表单验证 我已将我的actionCreator实现为:typescript中的Redux验证中间件,redux,react-redux,redux-thunk,redux-middleware,Redux,React Redux,Redux Thunk,Redux Middleware,我希望实现redux thunk,以便在我分派可能更改有效状态的特定操作时处理一些表单验证 我已将我的actionCreator实现为: import { DispatchTypes, ActionTypes } from "./Actions"; import { State } from "./State"; import { Validation } from "../models/Validation"; export con
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;
import{ActionTypes,Actions,DispatchTypes}来自“/Actions”;
从“redux”导入{中间件,分派,MiddlewareAPI};
从“/ActionCreators”导入{runFiltersValidation};
从“/State”导入{State}”;
常量类型要求验证=[
ActionTypes.ResetFilters
];
常量actionTypeContains=(类型:ActionTypes[],类型:ActionTypes):布尔=>
类型。索引(类型)!=-1.
const ValidationMiddleware:中间件=(
api:MiddlewareAPI
)=>(下一步:调度