reactjs - JSX.Element' 不可分配给 React 功能 HOC 中的类型 'ReactNode'

标签 reactjs typescript react-router-dom high-order-component

我需要编写 HOC 来将我的组件包装到 Suspense 中,我会将组件和后备作为 HOC 属性传递。

我的项目:

export const withSuspense = ({ Component, Fallback }: any)=> {

  return (props:any) => {
    return (
      <Suspense fallback={<Fallback />}>
        <Component {...props} />
      </Suspense>
    );
  };
};

然后我需要在路由中渲染(react-router v 6.15)

  <Route
    path="messages"
    element={withSuspense({MessagesPage,Loader})}
  />

出现错误类型“(props:any) => JSX.Element”无法分配给类型“ReactNode”

我尝试将 HOC 属性定义为 ReactNodes,但它不起作用。请问有什么想法吗?

最佳答案

'JSX.Element' is not assignable to type 'ReactNode' in React functional HOC

最新的 react-router-dom 中的

element 需要一个 ReactNode,而不是一个返回 JSX 的函数> 或 ReactNode

const Component = withSuspense({ MessagesPage, Loader });

<Route
  path="messages"
  element={<Component />}
/>

关于reactjs - JSX.Element' 不可分配给 React 功能 HOC 中的类型 'ReactNode',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77207303/

相关文章:

reactjs - 如何在 Typescript 中使用 composeWithDevTools createStore 而不会出现类型错误?

javascript - 使用 React Router 5 时遇到问题

html - 如何使用 react-router-dom 在浏览器后退按钮上关闭模式?

javascript - 如何在悬停 react 路由器链接时实现显示下划线的过渡效果?

reactjs - Material UI 组件在 react-frame-component 中丢失样式

javascript - 基于 React.js 中的 TextField 值启用或禁用按钮

javascript - Yarn Install - 如何强制使用最新的次要版本和 Node 补丁 (10.x.x)

javascript - 在jsx中使用split和map

javascript - 如何声明对运行时 JavaScript 包中可用的现有命名空间的引用

javascript - TypeScript 中 React StatelessComponent 的 DefaultProps