【问题标题】:Some components from 3rd party packages cannot use in React component tree来自 3rd 方包的一些组件不能在 React 组件树中使用
【发布时间】:2022-11-02 21:07:30
【问题描述】:

我有一个版本为 17.0.2notistack@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


    【解决方案1】:

    如果你仔细阅读 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
    

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

    【讨论】:

    • 感谢您的回答,当我安装不使用 MUI 的自定义 ui 包时,该问题首次出现。当我卸载包时,主项目再次开始工作。
    • 自定义包使用 React Native 组件,然后我使用 react-native-web 在 web 上使用它们。那部分没问题。它在开发环境中工作。当@types/react-native 中的@types/react 是v18 时,无论我安装的是@types/react-native 的旧版本,都会出现问题。
    • 当我尝试升级主项目的 React 版本时,会出现 MUI 的问题,因此它与我常用包中 @types/react-native 中的 @types/react (v18) 版本匹配。当我这样做时,MUI 开始对其组件抛出相同的问题。我正在使用 v5 Mui
    • 也许你已经尝试过了,但我在这个问题上看到了:github.com/iamhosseindhv/notistack/issues/485,你可以把 ` "@types/react": "18.0.8", "@types/react-dom": "18.0.3"` 来解决这个问题
    • 我还看到您需要放置一个特殊标志来安装@mui,因为它目前不适用于 react 18,他们在这里谈论它:stackoverflow.com/questions/71713111/…
    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2017-05-20
    • 2021-12-18
    • 2018-06-18
    相关资源
    最近更新 更多