我目前正在尝试为我的React应用程序做一个相当低级别的Typescript迁移。应用程序本身使用上下文,它在上下文中定义各种函数,并在需要时将它们导出到其他地方使用。
以下是我的“DataContext”文件:
export const DataContext = React.createContext({})
export const DataProvider = ({ children }: PropsWithChildren) => {
const fetchAll = async (userId: string) => {
// Function here
}
return (
<DataContext.Provider value={{ fetchAll }}>
{ children }
</DataContext.Provider>
)
}
但是,当我尝试将此文件导入另一个Typescript文件时,出现以下错误:
类型“{}”上不存在属性“fetchAll”
我假设这是因为在我的'createContext'上我使用了一个空对象。但是有没有其他的方法可以做到这一点,这是不是造成了我的错误?
下面是我在本例中导入“fetchAll”函数的文件:
import React, { useEffect, useContext } from 'react'
import { DataContext } from '../../context/DataContext'
type Props = {
text: string,
subcontent: string,
id: string
}
export const Pending = ({ text, subcontent, id }: Props) => {
const { fetchAll } = useContext(DataContext)
// I use fetchAll in a useEffect, but removed it for simplicity
return (
// Component here...
)
}
任何建议/指点都将不胜感激!
1条答案
按热度按时间n3ipq98p1#
为了能够检索
fetchAll
,必须设置上下文的类型然后,我将设置一个钩子来检索上下文值,如下所示
所以你可以这样使用
const {fetchAll} = useDataContext()