【发布时间】:2022-11-02 21:07:30
【问题描述】:
我有一个版本为 17.0.2 和 notistack@2.0.5 的 React 项目。现在,当我尝试导入小吃店提供程序并尝试将其用作时,
import { SnackbarProvider } from 'notistack';
return <SnackbarProvider maxSnack={3}>
<AppRouter />
</SnackbarProvider>
它抛出以下错误,
'SnackbarProvider' cannot be used as a JSX component.
Its instance type 'SnackbarProvider' is not a valid JSX element.
The types returned by 'render()' are incompatible between these types.
Type 'React.ReactNode' is not assignable to type 'import("/Users/madukadilshan/Desktop/projects/sma-web/node_modules/@sm/common-ui/node_modules/@types/react/index").ReactNode'.
Type '{}' is not assignable to type 'ReactNode'.ts(2786)
import PerfectScrollbar from 'react-perfect-scrollbar'; 也会出现同样的问题
包版本
- 反应:
17.0.2 - 通知:
2.0.5 - 反应完美滚动条:
^1.5.8 - 常用包中的react版本:
17.0.2
直到昨天它都工作得很好。今天我安装了一个我自己做的自定义组件包。最初我在通用 ui 包中使用了 React 18。我虽然可能是因为这个问题。尝试将common包中的react版本降级到v17,重新安装包。 (还尝试完全删除 node_modules 并重新安装所有)但错误仍然存在。
有谁知道我该如何解决这个问题?也试过this,但没有奏效。
更新
在我将公共包中的 react v18 更改为 v17 之后,现在它显示了相同的错误,但在公共 ui 中使用了不同的 3rd 方包。
到目前为止我所尝试的,
使用any 类型(绝对不是我想做的)
import { SnackbarProvider } from 'notistack';
const SnackbarProviderX: any = SnackbarProvider;
return <SnackbarProviderX></SnackbarProviderX>
在主项目中升级反应版本
升级主项目中的 React v17 -> v18,使其与通用包中的 react 版本匹配,即 v18。这样做解决了问题,但在 @mui 包中引入了相同的错误。它永远不会结束修复一个介绍另一个。
那么,有什么适当的方法可以忽略这个问题吗?
【问题讨论】:
标签: reactjs typescript