Пытаясь создать вложенные маршруты в реактивном маршрутизаторе dom v5, я нашел этот ответ , который объясняет, как это сделать очень хорошо
(пожалуйста, взгляните на код здесь потому что это немного отличается от ответа, упомянутого выше)
Макеты. js
const NotFound = () => <h1>Not Found</h1>;
function Layouts() {
return (
<Switch>
<Route path="/auth" component={AuthLayout} />
<Route path="/app" component={AppLayout} />
<Route path="/" component={NotFound} />
</Switch>
);
}
AuthLayout
const Signup = () => <p>Login</p>;
const Login = () => <p>Sign up</p>;
function AuthLayout() {
return (
<div>
<h1>Auth Layout</h1>
<Route path="/auth/signup" exact component={Signup} />
<Route path="/auth/login" exact component={Login} />
{/* Commenting this because I want to go to NotFound component */}
{/* <Redirect from="/auth" to="/auth/login" exact /> */}
</div>
);
}
AppLayout
const Home = () => <p>Home</p>;
const Dashboard = () => <p>Dashboard</p>;
function AppLayout() {
return (
<div>
<h1>App Layout</h1>
<Route path="/app/home" exact component={Home} />
<Route path="/app/dashboard" exact component={Dashboard} />
{/* Commenting this because I want to go to NotFound component */}
{/* Redirect from="/app" to="/app/home" exact /> */}
</div>
);
}
Но у этого есть одна проблема: если вы go перейдете к маршруту с /app/somethingnotfound
, он не будет go до <Route path="/" component={NotFound} />
, он останется внутри AppLayout
и не отобразит маршрут.
Как я могу преобразовать /app/somethingnotfound
go в <Route path="/" component={NotFound} />
в этом случае?
Изменить:
Для большей ясности: я не хочу просто добавьте <Route component={NotFound} />
внутри AuthLayout
и AppLayout
, потому что он будет отображать другие вещи. Что мне действительно нужно, так это показать верхний уровень NotFound
.