我正在使用React react-router(4.3.1)的最新版本(16.6),并尝试通过使用代码拆分React.Suspense。
react-router
React.Suspense
尽管我的路由有效,并且代码确实分成了多个动态加载的包,但我收到有关不返回函数,而是返回的警告Route。我的代码:
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.
Warning: Failed prop type: Invalid prop
of type
supplied to
, expected
.
普通导入会返回一个函数,但是动态导入lazy()会返回一个对象。
lazy()
有什么解决办法吗?
尝试使用render道具代替component
render
component
<Route path="/" render={()=> <Prime />} exact /> <Route path="/demo" render={()=> <Demo />} />