Я создаю хранилище управления состоянием реагирования с использованием хуков, после описанного Таннером Линсли здесь описанного «шаблона хуков действия».
Я изучаю Typescript и пытаюсь создать этот проект.используя его, но продолжаю сталкиваться с ошибкой при вызове пользовательского хука для использования хранилища:
'Свойство' useStore 'не существует для типа' () => {Provider: ({initialValue, children}: {initialValue ?: {}; children: any;}) => Элемент;useStore: () => any;} 'ts (2339)
Я протестировал его в простой реакции, и он работает, так что это проблема определения типа или свойства в Typescript.
Общее хранилище создано (без ошибок машинописи):
interface IState {}
const initialState: IState = {}
export default function newStore() {
const context = React.createContext<IState>(initialState)
const Provider = ({ initialValue = {}, children }): JSX.Element => {
const [state, setState] = useState(initialValue)
const contextValue = useMemo(() => [state, setState], [state])
return <context.Provider value={contextValue}>{children}</context.Provider>
}
const useStore = () => useContext(context)
return { Provider, useStore }
}
Хуки действий магазина (ошибка показана для обоих случаев использования хранилища):
import store from "./makeStore";
export const useGalleryOpen = () => {
const [{ galleryOpen }] = store.useStore()
return galleryOpen
}
export const useGalleryToggle = () => {
const [_, setState] = store.useStore()
return () =>
setState(prev => ({
...prev,
galleryOpen: !prev.galleryOpen,
}))
}
Любой совет с благодарностью.