我对Material-uiV4中的新Hooks API感到困惑。
@ material-ui / core声明了export default function useTheme<T = Theme>(): T;
,但没有实现,因为它会出错。
文档说您应该从@ material-ui / styles导入,但是可以将其设置为未知。
export default function useTheme<T>(): T;
默认情况下,为什么@ material-ui / styles版本没有T =主题?
为什么@ material-ui / core会有一个声明开头?
答案 0 :(得分:1)
以下是相关代码和TypeScript声明文件的链接:
@ material-ui / core中useTheme
的TypeScript声明文件:
用于useTheme
的TypeScript声明文件,其格式为@ material-ui / styles:
@ material-ui / core中useTheme
的代码:
@ material-ui / styles中useTheme
的代码:
@material-ui/styles
以完全独立于@material-ui/core
的方式提供样式功能(@material-ui/core
依赖于@material-ui/styles
,而@material-ui/styles
不是 取决于@material-ui/core
)。
ThemeProvider
中的useTheme
和@material-ui/styles
功能可以与 any 主题结构一起使用,因此它具有未知类型是准确的。 useTheme
中的@material-ui/core
主要是@material-ui/styles
版本的包装,但是它假定主题的结构与Material-UI的默认主题匹配,并且如果没有提供主题(通过{ {1}}),则它将返回默认主题(而ThemeProvider
版本没有“默认”主题的概念)。
文档说您应该从@ material-ui / styles导入
我很想知道文档的哪一部分这么说。只要您使用Material-UI的主题结构,我建议您从@material-ui/styles
导入useTheme
。