小编典典

带有React 16.6 Suspense的React Router“向“路由”提供了类型为“对象”的无效道具“组件”,预期为“功能”。)

reactjs

我正在使用React react-router(4.3.1)的最新版本(16.6),并尝试通过使用代码拆分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);

控制台警告如下: Warning: Failed prop type: Invalid propcomponentof typeobjectsupplied toRoute, expectedfunction.

普通导入会返回一个函数,但是动态导入lazy()会返回一个对象。

有什么解决办法吗?


阅读 450

收藏
2020-07-22

共1个答案

小编典典

尝试使用render道具代替component

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