Как создать createContext в ReacJS TypeScript
Создаю провайдер в котором хочу подключить Апи сервис и потом в любом месте я мог вызвать нужный метод через useContext. В чистом EcmaScript все работает отлично, но в TypeScript не работает.
import { createContext } from 'react'
import { ApiService, IService } from '../services/ApiService'
export const ApiSerivceContext = createContext()
export const ApiServiceProvider: React.FC = ({ children }) => {
const api = new ApiService()
return (
<ApiSerivceContext.Provider value={api}>
{children}
</ApiSerivceContext.Provider>
)
}
Вот так я создаю контекст, но когда вызываю его в файле App.js контекст пустой. C reducer понятно как делать. Нужно сделать type, потом initialState. но как быть с сервисом, где методы и параметры будут увеличиваться?
Ответы (3 шт):
Автор решения: Ruslan Mart
→ Ссылка
import { createContext } from 'react'
import { ApiService, IService } from '../services/ApiService'
export const ApiSerivceContext = createContext<ApiService | null>(null)
export const ApiServiceProvider: React.FC = ({ children }) => {
const api = new ApiService()
return (
<ApiSerivceContext.Provider value={api}>
{children}
</ApiSerivceContext.Provider>
)
}
Автор решения: Armen
→ Ссылка
если правильно понял возможно динамически указать например как интерфейс и этот интерфейс можно применить к обекту с бесконечным количеством ключей естественно если тип совпадает
interface IAp {
[key:type]:type
}
Автор решения: borzz.one
→ Ссылка
Оказывается нужно было вот таким образом передать класс.
import { createContext } from 'react'
import { ApiService, IService } from '../services/ApiService'
export const ApiSerivceContext = createContext<IService>(new ApiService() )
export const ApiServiceProvider: React.FC = ({ children }) => {
const api = new ApiService()
return (
<ApiSerivceContext.Provider value={api}>
{children}
</ApiSerivceContext.Provider>
)
}