Reactjs 为什么MaterialUIV4声明useTheme而不声明';你不能实施吗?
我对Material-uiV4中的新Hooks API感到非常困惑 @物料界面/核心声明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的类
导出默认函数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作为依赖项。