Files
fe_supplier_frontend/src/models/breadcrumb.ts
2025-07-03 14:40:22 +08:00

60 lines
1.2 KiB
TypeScript

type Effect = (action: { payload: any }, effects: { call: any; put: any; select: any }) => Generator<any, void, unknown>;
type Reducer<S> = (state: S, action: { payload: any }) => S;
export interface BreadcrumbState {
breadcrumbName: string | null;
}
export interface BreadcrumbModelType {
namespace: 'breadcrumb';
state: BreadcrumbState;
effects: {
updateBreadcrumbName: Effect;
resetBreadcrumb: Effect;
};
reducers: {
setBreadcrumbName: Reducer<BreadcrumbState>;
resetState: Reducer<BreadcrumbState>;
};
}
const BreadcrumbModel: BreadcrumbModelType = {
namespace: 'breadcrumb',
state: {
breadcrumbName: null,
},
effects: {
*updateBreadcrumbName({ payload }, { put }) {
yield put({
type: 'setBreadcrumbName',
payload,
});
},
*resetBreadcrumb(_, { put }) {
yield put({
type: 'resetState',
});
},
},
reducers: {
setBreadcrumbName(state: BreadcrumbState, { payload }: { payload: string }) {
return {
...state,
breadcrumbName: payload,
};
},
resetState() {
return {
breadcrumbName: null,
};
},
},
};
export default BreadcrumbModel;