【问题标题】:MaterialUI withStyles: Invalid prop `component` of type `object` supplied to `Route`, expected `function`MaterialUI withStyles:提供给`Route`的`object`类型的无效prop`component`,预期`function`
【发布时间】:2020-03-04 05:16:00
【问题描述】:

当我尝试使用使用material-ui withStyles 功能导出的组件时,我收到了这个警告,如下所示:

export default withStyles(styles)(MyComponent)

然后像这样将它传递给ReactRouter

import MyComponentfrom './MyComponent'
<Route path="/my-component" component={MyComponent} />

组件正在按预期呈现并且运行良好,但警告让我感到困扰。

谁能解释我为什么会得到这个?

更新 1(添加警告):

【问题讨论】:

  • 你能添加警告吗
  • 你用的是什么版本的 react-router?
  • 这可能与stackoverflow.com/questions/56448807/… 类似的问题,除了使用旧版本的 react-router 而不是旧版本的 react-redux。

标签: reactjs react-router material-ui


【解决方案1】:

我怀疑您使用的是 4.3.1 或更早版本的 react-router。

这在Route 中使用component: PropTypes.func

随着 React.forwardRef(在 Material-UI v4 中大量使用)和 React 16.8(钩子)中引入的其他特性的引入,可以有一个不是函数的组件类型。

从 react-router 4.4 版本开始,它改为使用isValidElementType。这样可以正确识别forwardRef等方法返回的组件类型。

相关回答:I'm getting error after upgrading to Material UI 4 - withStyles

【讨论】:

  • 你是对的,我使用的是路由器 4.1.0。但是我在 4.3.1(没有 4.4)之后看不到任何东西,它直接到 5。我会尝试这个升级
  • 4.4 存在于 Git 中,但在 npm 中它从 4.4 的 beta 版直接升级到了 5.0。我建议去最新版本 5.1.2。
猜你喜欢
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 2016-03-01
  • 2019-06-14
  • 1970-01-01
  • 2020-08-01
  • 2018-01-23
  • 1970-01-01
相关资源
最近更新 更多