Поставлен неверный тип пропеллера - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть маршрут React, определенный в моем приложении как:

<PrivateRoute path="/home" component={Home} />

Компонент загружает пользователя из хранилища, затем в зависимости от типа выполняет перенаправление. Он определяется как:

import React, { useEffect, memo } from 'react'
import { connect } from 'react-redux'
import { compose } from 'redux'
import { createStructuredSelector } from 'reselect'
import { Redirect } from 'react-router-dom'
import { useInjectSaga } from '../../utils/injectSaga'
import {
  makeSelectCurrentUser,
  makeSelectLoading,
  makeSelectError
} from '../../containers/App/selectors'
import { loadUser } from '../../containers/App/actions'
import saga from '../../components/Header/saga'

const key = 'home'

function Home({ user, loading, error, loadUser }) {
  useInjectSaga({ key, saga })

  const username = localStorage.getItem('username')
  useEffect(() => {
    loadUser(username)
  }, [])

  return !loading && user && !error ? (
    <Redirect to={user.type === 'admin' ? '/admin' : '/promoter'} />
  ) : (
    <div>Loading...</div>
  )
}

const mapStateToProps = createStructuredSelector({
  user: makeSelectCurrentUser(),
  loading: makeSelectLoading(),
  error: makeSelectError()
})

const mapDispatchToProps = dispatch => {
  return {
    loadUser: username => dispatch(loadUser(username))
  }
}

const withConnect = connect(mapStateToProps, mapDispatchToProps)

export default compose(withConnect, memo)(Home)

Когда я выполняю код, он работает. Однако в консоли появляется предупреждение:

index.js:1437 Warning: Failed prop type: Invalid prop `component` supplied to `PrivateRoute`.

Указывает на линию с моим "домашним" маршрутом.

Что я делаю не так? Как это должно быть сделано?

1 Ответ

0 голосов
/ 23 февраля 2020

Я нашел решение. Как только я сделал следующее, проблема ушла.

<PrivateRoute path="/home" component={() => <Home/>} />

Все еще странно, но последний, очевидно, действителен, несмотря ни на что. Похоже, ошибка в реакции-роутере, может быть.

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