Reactjs 为什么MaterialUIV4声明useTheme而不声明';你不能实施吗?

Reactjs 为什么MaterialUIV4声明useTheme而不声明';你不能实施吗?,reactjs,material-ui,Reactjs,Material Ui,我对Material-uiV4中的新Hooks API感到非常困惑 @物料界面/核心声明导出默认函数useTheme():T但没有实现,因为它出错了。 文档中说您应该从@material ui/styles导入,但类型设置为unknown 导出默认函数useTheme():T 为什么@material ui/styles版本默认没有t=主题? 为什么@material ui/core要以声明开头?以下是相关代码和类型脚本声明文件的链接: @material ui/core中useTheme的类

我对Material-uiV4中的新Hooks API感到非常困惑

@物料界面/核心声明
导出默认函数useTheme():T但没有实现,因为它出错了。
文档中说您应该从@material ui/styles导入,但类型设置为unknown

导出默认函数useTheme():T

为什么@material ui/styles版本默认没有t=主题?

为什么@material ui/core要以声明开头?

以下是相关代码和类型脚本声明文件的链接:

  • @material ui/core中
    useTheme
    的类型脚本声明文件:

  • @material ui/styles中
    useTheme
    的类型脚本声明文件:

  • @material ui/core中的useTheme代码:

  • @material ui/style中的useTheme代码:

@material ui/styles
以完全独立于
@material ui/core
的方式提供样式功能(
@material ui/core
依赖于
@material ui/styles
,但
@material ui/styles
不依赖于
@material ui/core

@material ui/styles
中的
ThemeProvider
useTheme
功能可以与任何主题结构一起使用,因此它具有一种未知类型是准确的。
@material ui/core
中的
useTheme
主要是
@material ui/styles
版本的包装,但它假设主题的结构与material ui的默认主题匹配,如果没有提供主题(通过
ThemeProvider
),那么它将返回默认主题(而
@material ui/styles
版本没有“默认”主题的概念)

文档中说您应该从@material ui/styles导入


我很想知道文档的哪一部分是这样说的。只要您使用Material UI的主题结构,我建议您从
@Material UI/core/styles
导入
useTheme

我有这两个useTheme声明文件。使用VSCode,这两个文件可用,其中包含上述类型。One显然来自核心包,或者我遗漏了一些东西。
node_modules/@material ui/core/styles/useTheme.d.ts
node_modules/@material ui/styles/useTheme/useTheme.d.ts
我已经更新了我的答案,因为我更好地理解了你的问题。这澄清了一些事情。文档中没有“说明”你uld’从@material ui/styles导入,但在示例中使用该导入。阅读更新的答案后,你会认为这是因为抽象。我已经通过core而不是styles包直接更改了所有导入。效果非常好。导致导入失败的错误首先引发了这个问题具有多个版本的材质ui作为依赖项。