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, } | { 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]>([initState(), () => null]); //#endregion export const pageContext = createPageContext();