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

【字号: 日期:2024-04-19浏览:12作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决带有React 16.6 Suspense的React Router“向“路由”提供了类型为“对象”的无效道具“组件”,预期为“功能”)?

尝试使用render道具代替component

<Route path='/' render={()=> <Prime />} exact /><Route path='/demo' render={()=> <Demo />} />解决方法

我正在使用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()会返回一个对象。

有什么解决办法吗?

相关文章: