现在我正在按照themingreact-native-paper
指南来定制主题。但是当我尝试通过useTheme
钩子来使用主题时,我得到的theme
对象的响应似乎没有正确/完全类型化,并且我不能使用对象解构自动完成。
export const LightTheme = {
...PaperDefaultTheme,
colors: {
customColor: 'green',
},
};
<PaperProvider
theme={
colorScheme === "dark"
? { ...DarkTheme }
: { ...LightTheme }
}
>
<AppProvider>
{{...}}
</AppProvider>
</PaperProvider>
在这里,VSCode显示theme
对象的推断类型为const theme: Theme
,但在尝试访问主题属性时无法识别它们:
import { useTheme } from "react-native-paper";
const theme = useTheme();
// e.g. theme.colors is not autocompleted
目前,作为一个解决方案,我将useTheme
钩子 Package 在一个自定义钩子中,该钩子从我的输入中返回所需的Theme
类型:
import { useTheme as _useTheme } from "react-native-paper";
import { Theme } from "../theme";
export function useTheme(): Theme {
const theme = _useTheme();
return theme;
}
在撰写本文时,我使用的是5.0.0-rc.6
版本
1条答案
按热度按时间cyvaqqii1#
就类型文件所示,
useTheme
有一个泛型参数来支持类型化对象,例如:当然,为了可重用性,您可以将其与您提供的解决方案混合使用: