React-Маршрутизатор не работает на верхнем уровне внутри App.js который определяет

#reactjs #react-router #react-router-dom

Вопрос:

Мои <Redirect/> работы корректно выполняются на всех компонентах под моим App.js, которая определяет <Router> структуру.

Например, если у меня есть <SomeComponent> где-то внизу, это правильно перенаправляет на /error в случае ошибок:

SomeComponent.js

 return (<>      
    {
        error.message amp;amp; <Redirect to="/error" />
    }
 

Но на высшем уровне в App.js Мне также нужно проверить наличие ошибок и при необходимости перенаправить. Здесь я также определяю основную <Router> структуру. По какой-то причине это перенаправление верхнего уровня не работает:

App.js

 return (<>
        <div className="App">
            <Router>
                {/* I am inside Router, so there shouldn't be any issues */}

                {/* Check for errors and redirect as usual */}
                {
                   error.message amp;amp; <Redirect to="/error" />
                }      

                <Main /> {/* The <Main> component has Switch/Route */}
          
            </Router>
        </div>
       );
 

Есть идеи, почему? К вашему сведению, маршрутизатор определяется как import { BrowserRouter as Router } from "react-router-dom" .

Комментарии:

1. Где у вас есть маршрут для /ошибки?

2. у вас нет никакого сообщения об ошибке,просто не работает?

3. У меня есть Switch..Route компонент под названием <Main> , который находится в компоненте приложения. Может быть, именно поэтому это не работает, на самом деле.

4. Это должно быть проблемой, поскольку Перенаправление находится за пределами маршрута переключения.