【发布时间】:2020-06-28 17:24:35
【问题描述】:
我们如何在 React.CreateContext 中使用泛型?
我有这个:
interface Props {
}
export interface SearchContextProps {
dtos: any[];
}
export const SearchContext = React.createContext<SearchContextProps>({
dtos: []
});
const SearchPage: React.FunctionComponent<Props> = (props) => {
const [dtos, setDtos] = React.useState<any[]>([]);
const searchContext = {
dtos: dtos
};
return (
<SearchContext.Provider value={searchContext}>
...
</SearchContext.Provider>
);
}
export default SearchPage;
现在我想使用泛型,所以我会写如下内容:
interface Props<T> {
}
export interface SearchContextProps<T> {
dtos: T[];
}
export const SearchContext = React.createContext<SearchContextProps<T>>({
dtos: []
});
const SearchPage = <T extends object>(props: Props<T>) => {
const [dtos, setDtos] = React.useState<T[]>([]);
const searchContext = {
dtos: dtos
};
return (
<SearchContext.Provider value={searchContext}>
...
</SearchContext.Provider>
);
}
export default SearchPage;
但我不知道如何去上班:
export const SearchContext = React.createContext<SearchContextProps<T>>({
如何在此处使用泛型,如何访问 T?
我试图在组件内移动上下文:
interface Props<T> {
}
export interface SearchContextProps<T> {
dtos: T[];
}
const SearchPage = <T extends object>(props: Props<T>) => {
const [dtos, setDtos] = React.useState<T[]>([]);
const SearchContext = React.createContext<SearchContextProps<T>>({
dtos: [],
});
const searchContext = {
dtos: dtos,
};
return (
<SearchContext.Provider value={searchContext}>
...
</SearchContext.Provider>
);
}
export default SearchPage;
但现在我不知道如何导出它。
有什么帮助吗?
【问题讨论】:
-
嗨 Simone,我目前正在处理相同的主题。你找到解决方案了吗?
-
是的,看我自己的回答。
标签: reactjs typescript generics react-context