123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import {createPageContext} from '@hooks';
- import {Dispatch, useReducer} from 'react';
- import {createContext} from 'use-context-selector';
- //#region 搜索参数
- type State = {
- code: string;
- name: string;
- isSearching: boolean;
- };
- type Action =
- | {
- type: 'SEARCH',
- payload: Omit<State, 'isSearching'>,
- }
- | {
- type: 'CHANGE_SEARCH_STATE',
- payload: boolean,
- };
- function reducer(state: State, action: Action): State {
- const {type} = action;
- switch (type) {
- case 'SEARCH':
- return {...state, ...action.payload};
- case 'CHANGE_SEARCH_STATE':
- return {...state, isSearching: action.payload};
- default:
- return state;
- }
- }
- function initState(): State {
- return {code: '', name: '', isSearching: false};
- }
- export function useContextReducer() {
- return useReducer(reducer, initState());
- }
- export const context = createContext<[State, Dispatch<Action>]>([initState(), () => null]);
- //#endregion
- export const pageContext = createPageContext();
|