reactjs 第三方软件包中的某些组件无法在React组件树中使用

1hdlvixo  于 2022-11-04  发布在  React
关注(0)|答案(1)|浏览(179)

我有一个版本为17.0.2notistack@2.0.5的React项目。现在,当我尝试导入snackbar提供程序并将其用作

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';也会发生相同的问题
软件包版本

  • reactjs :17.0.2
  • 通知堆栈:2.0.5
  • React-完美-滚动条:^1.5.8
  • 通用软件包中React版本:17.0.2

直到昨天它都运行得很好。今天我安装了一个我做的自定义组件包。最初我在通用UI包中使用了React 18。我想可能是因为这个问题。尝试将通用包中的react版本降级到v17并重新安装该包。(也尝试完全删除node_modules并重新安装所有模块)但错误仍然存在。
有人知道如何解决此问题吗?也尝试了this,但没有成功。
更新
在我将react v18更改为v17后,现在它显示了一个相同的错误,但使用了不同的第三方软件包,在通用用户界面中使用了react。
到目前为止我所尝试的,

使用any类型(肯定不是我想做的)

import { SnackbarProvider } from 'notistack';
const SnackbarProviderX: any = SnackbarProvider;

return <SnackbarProviderX></SnackbarProviderX>

升级主项目中的React版本

升级主项目中的React v17 -〉v18,使其与通用包中的react版本v18匹配。这样做修复了问题,但引入了@mui包的相同错误。修复一个包永远不会结束,从而引入另一个包。
那么,有没有什么适当的办法可以忽略这个问题呢?

xytpbqjk

xytpbqjk1#

如果你仔细阅读npm包或git,你会发现:

If you're using Material-UI version 4.x.x or lower, download a compatible version of notistack using:

npm install notistack@latest-mui-v4
yarn add notistack@latest-mui-v4

这个月早些时候我也遇到了同样的麻烦,我知道这是一场斗争

相关问题