Чтобы лучше изучить React, TypeScript и Context / Hooks, я делаю простое приложение для Todo. Однако код, необходимый для создания контекста, кажется громоздким.
Например, если я хочу изменить то, что имеет Todo, я должен изменить его в трех местах (интерфейс ITodo, значение контекста по умолчанию, значение состояния по умолчанию ). Если я хочу передать что-то новое, я должен сделать это в трех местах (TodoContext, значение по умолчанию TodoContext и значение =). Есть ли лучший способ не писать столько кода?
import React from 'react'
export interface ITodo {
title: string,
body?: string,
id: number,
completed: boolean
}
interface TodoContext {
todos: ITodo[],
setTodos: React.Dispatch<React.SetStateAction<ITodo[]>>
}
export const TodoContext = React.createContext<TodoContext>({
todos: [{title: 'loading', body: 'loading', id: 0, completed: false}],
setTodos: () => {}
})
export const TodoContextProvider: React.FC<{}> = (props) => {
const [todos, setTodos] = React.useState<ITodo[]>([{title: 'loading', body: 'loading', id: 0, completed: false}])
return (
<TodoContext.Provider value={{todos, setTodos}}>
{props.children}
</TodoContext.Provider>
)
}