React Router с React 16.6 Suspense "Недопустимый компонент prop` типа `object`, переданный в` Route`, ожидаемый `function`." - PullRequest
0 голосов
/ 26 октября 2018

Я использую последнюю версию (16.6) React с 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);

Предупреждение консоли выглядит следующим образом: Warning: Failed prop type: Invalid prop `component` of type `object` supplied to `Route`, expected `function`.

Обычный импорт возвращает функцию, но динамический импорт с lazy() возвращает объект.

Есть ли исправления для этого?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Это будет исправлено в react-router-dom версии 4.4+, поскольку эта проблема предлагает

Вы можете дождаться финальной версии или если вы не хотите менять свой код сегодня,Вы можете установить бета-версию прямо сейчас yarn add react-router-dom@next

0 голосов
/ 27 октября 2018

Попробуйте использовать render prop вместо component

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...