#typescript
Вопрос:
У меня есть эти 3 кода, я хочу переключить тему с компонента с помощью contextAPI и получаю следующую ошибку :
(Тип ‘(состояние: строка) =gt; void’ не может быть присвоен типу ‘() =gt;gt; void’.ts(2322) ModalState.tsx(13, 3): Ожидаемый тип исходит из свойства ‘SwitchTheme’, которое объявлено здесь в типе ‘ThemeContext’) в SwitchTheme, в AppStateContext.Поставщик ценит любую подсказку, чего мне не хватает ?
// Context State Logic import { type } from 'os'; import React, { useState, createContext, useReducer } from 'react'; import ModalReducer from './modalReducer'; // Declare interfaces interface themeContext { dark: false; SwitchTheme?: () =gt; void; } const defaultState: themeContext = { dark: false, }; // Create context export const AppStateContext = createContextlt;themeContextgt;(defaultState); // Create a single type for now export const SET_THEME = 'SET_THEME'; // Create provider component const AppStateProvider: React.FC = ({ children }) =gt; { const [state, dispatch] = useReducer(ModalReducer, defaultState); // Action Fuction const SwitchTheme = (state: string) =gt; { dispatch({ type: SET_THEME, state: state, }); }; return ( lt;AppStateContext.Provider value={{ darktheme: state.darktheme, SwitchTheme, }} gt; {children} lt;/AppStateContext.Providergt; ); }; export default AppStateProvider;
// Reducer Logic import { SET_THEME } from './AppState'; export default (state: any, action: any) =gt; { switch (action.type) { case SET_THEME: return { ...state, darktheme: action.state, }; default: return state; } };
// Inside Component Function const switchTheme = () =gt; { context.SwitchTheme(true); };