React Router отображает пустые страницы с помощью React Redux

В моем App.js у меня есть следующее:

const Index = asyncRoute(() => import('~/pages/index'))
const Register = asyncRoute(() => import('~/pages/register'))
const AddDesign = asyncRoute(() => import('~/pages/add-design'))
const Login = asyncRoute(() => import('~/pages/login'))

class App extends Component {
  render() {
    const { isLoggedIn } = this.props;

    if (!isLoggedIn){
      return (
          <Switch>
              <Route path = {'/login'} component = {Login} />
              <Route path = {'/register'} component = {Register} />
              <Redirect to = {'/login'} />
          </Switch>
      );
    }
    return (
      <Switch>
        <Route exact path='/' component = {Index}/>
        <Route exact path='/add-design' component = {AddDesign}/>
        <Route exact path = "/login" render = {() => <Redirect to = "/"/>} />
        <Route exact path = "/register" render = {() =>  <Redirect to = "/"/>} />
        <Redirect to = {'/'} />
      </Switch>
    );
  }
}

function mapStateToProps({ user }) {
  return {
    isLoggedIn: !!user.token,
  };
}

export default connect(mapStateToProps)(App);

Когда пользователь входит в систему, isLoggedIn устанавливается на true, а затем пытается перенаправить пользователя обратно на "/".

Это происходит, однако загруженная страница - это файл index.html в общественный, а не компонент Index.

Я не уверен, имеет ли это значение, но мой asyncRoute - это обходной путь для FOUC:

import React, { Component } from 'react'
import PropTypes from 'prop-types'

import Loading from '~/components/Loading'

class AsyncImport extends Component {
  static propTypes = {
    load: PropTypes.func.isRequired,
    children: PropTypes.node.isRequired
  }

  state = {
    component: null
  }

  _hasClass(target, className) {
     return new RegExp('(\\s|^)' + className + '(\\s|$)').test(target.className);
  }

  toggleFoucClass () {
    const root = document.getElementById('root')
    if (this._hasClass(root, 'fouc')) {
      root.classList.remove('fouc')
    } else {
      root.classList.add('fouc');
    }
  }

  componentWillMount () {
    this.toggleFoucClass()
  }

  componentDidMount () {
    this.props.load()
      .then((component) => {
        setTimeout(() => this.toggleFoucClass(), 1)
        this.setState(() => ({
          component: component.default
        }))
      })
  }

  render () {
    return this.props.children(this.state.component)
  }
}

const asyncRoute = (importFunc) =>
  (props) => (
    <AsyncImport load = {importFunc}>
      {(Component) => {
        return Component === null
          ? <Loading size = "large" />
          : <Component {...props} />
      }}
    </AsyncImport>
  )

export default asyncRoute

Может ли кто-нибудь объяснить, почему мои пользователи маршрутизируются, но компонент не отображается?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
180
1

Ответы 1

Предполагая использование RR4 Пытаться:

<Route path = "/" component = {App}>
<IndexRedirect to = "/index" />
<Route path = "index" component = {Index} />

Обратитесь к следующему, чтобы получить правильный вариант использования: https://github.com/ReactTraining/react-router/blob/5e69b23a369b7dbcb9afc6cdca9bf2dcf07ad432/docs/guides/IndexRoutes.md

Другие вопросы по теме