【发布时间】:2019-03-31 03:58:43
【问题描述】:
我正在使用最新版本 (16.6) 和 react-router (4.3.1) 的 React,并尝试使用 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 prop `component` of type `object` supplied to `Route`, expected `function`.
正常的导入会返回一个函数,但使用lazy() 的动态导入会返回一个对象。
有什么解决办法吗?
【问题讨论】:
-
很奇怪,您可以尝试类似
} 精确 /> -
@kasho 这完全破坏了我的应用程序。发现了这个问题,好像有解决办法:github.com/ReactTraining/react-router/issues/6420
标签: reactjs react-router react-router-v4 dynamic-import react-16