Files
fe_supplier_frontend/src/models/breadcrumb.ts

60 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-07-01 14:18:23 +08:00
2025-07-03 14:40:22 +08:00
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;
2025-07-01 14:18:23 +08:00
2025-07-03 14:40:22 +08:00
export interface BreadcrumbState {
breadcrumbName: string | null;
2025-07-01 14:18:23 +08:00
}
export interface BreadcrumbModelType {
namespace: 'breadcrumb';
2025-07-03 14:40:22 +08:00
state: BreadcrumbState;
2025-07-01 14:18:23 +08:00
effects: {
2025-07-03 14:40:22 +08:00
updateBreadcrumbName: Effect;
resetBreadcrumb: Effect;
2025-07-01 14:18:23 +08:00
};
reducers: {
2025-07-03 14:40:22 +08:00
setBreadcrumbName: Reducer<BreadcrumbState>;
resetState: Reducer<BreadcrumbState>;
2025-07-01 14:18:23 +08:00
};
}
const BreadcrumbModel: BreadcrumbModelType = {
namespace: 'breadcrumb',
state: {
2025-07-03 14:40:22 +08:00
breadcrumbName: null,
2025-07-01 14:18:23 +08:00
},
effects: {
2025-07-03 14:40:22 +08:00
*updateBreadcrumbName({ payload }, { put }) {
yield put({
type: 'setBreadcrumbName',
payload,
});
},
*resetBreadcrumb(_, { put }) {
2025-07-01 14:18:23 +08:00
yield put({
2025-07-03 14:40:22 +08:00
type: 'resetState',
2025-07-01 14:18:23 +08:00
});
},
},
reducers: {
2025-07-03 14:40:22 +08:00
setBreadcrumbName(state: BreadcrumbState, { payload }: { payload: string }) {
2025-07-01 14:18:23 +08:00
return {
...state,
2025-07-03 14:40:22 +08:00
breadcrumbName: payload,
};
},
resetState() {
return {
breadcrumbName: null,
2025-07-01 14:18:23 +08:00
};
},
},
};
2025-07-03 14:40:22 +08:00
export default BreadcrumbModel;