为什么material-ui v4声明useTheme但未实现?

时间:2019-06-27 11:20:05

标签: material-ui

我对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会有一个声明开头?

1 个答案:

答案 0 :(得分:1)

以下是相关代码和TypeScript声明文件的链接:

@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