reactjs - React Router 与 React 16.6 Suspense "Invalid prop ` 组件`类型为 `object` 提供给 `Route` ,预期为 `function` 。”

标签 reactjs react-router react-router-v4 dynamic-import react-16

我正在使用 React 的最新版本 (16.6) 和 react-router (4.3.1),并尝试使用 React.Suspense 进行代码分割。

虽然我的路由正在工作,并且代码确实分成了几个动态加载的包,但我收到了一条警告,称不返回函数,而是返回 Route 的对象。我的代码:

import React, { lazy, Suspense } from 'react';
import { Switch, Route, withRouter } from 'react-router-dom';

import Loading from 'common/Loading';

const Prime = lazy(() => import('modules/Prime'));
const Demo = lazy(() => import('modules/Demo'));

const App = () => (
  <Suspense fallback={<Loading>Loading...</Loading>}>
    <Switch>
      <Route path="/" component={Prime} exact />
      <Route path="/demo" component={Demo} />
    </Switch>
  </Suspense>
);

export default withRouter(App);

控制台警告如下: 警告:失败的 prop 类型:提供给 `Route` 的 `object` 类型的 prop `component` 无效,预期为 `function`。

普通导入将返回一个函数,但使用 lazy() 的动态导入将返回一个对象。

有什么解决办法吗?

最佳答案

尝试使用 render 属性而不是 component

<Route path="/" render={()=> <Prime />} exact />
<Route path="/demo" render={()=> <Demo />} />

关于reactjs - React Router 与 React 16.6 Suspense "Invalid prop ` 组件`类型为 `object` 提供给 `Route` ,预期为 `function` 。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53007905/

相关文章:

javascript - 使用路由器通过路径 react 传递参数并且无法正确呈现

reactjs - 登录后 URL 发生变化并且不显示 View (不重新加载,渲染页面) - react

Javascript如何循环直到找不到属性(React)

laravel - 如何在 Javascript 中将对象数组转换为 GraphQL 格式?

reactjs - 如何在驻留在使用从 React Router 构建的嵌套 URL 的子目录上的 SPA React 应用程序上正确配置 Apache?

reactjs - React Router v4 路由不起作用

javascript - 异步等待后获取 Promise 数组

javascript - react : loading and updating nested resources when URI changes without excess duplication?

reactjs - 如何在 Gatsby 中创建动态路线

javascript - {this.props.children} 返回 null