Я пытаюсь найти способ организовать свои маршруты, чтобы помочь разработчику, который мог бы взять на себя мою работу в будущем.Я подумал о том, чтобы разделить мои записи <Route />
на отдельные компоненты, а затем просто загрузить их в основной компонент, аналогично тому, как пользователям назначаются группы.
Проблема заключается в том, что при использовании более одного компонента работает только первый.,Возможно, это не самый быстрый способ сделать это, поэтому я также открыт для альтернатив.
Оригинальное расположение маршрута
const AllRoutes = () => {
return (
<Switch>
{/* public routes*/}
<Route path={'/about'} component={AboutView} />
<Route path={'/project'} component={ProjectView} />
<Route path={'/contact'} component={ContactView} />
{/* auth routes */}
<Route path={'/login'} component={LoginView} />
<Route path={'/logout'} component={LogoutView} />
<Route component={Error404View} />
</Switch>
)
}
Разделение общественностимаршруты от аутентификации:
const PublicRouteGroup = () => {
return (
<>
<Route path={'/about'} component={AboutView} />
<Route path={'/project'} component={ProjectView} />
<Route path={'/contact'} component={ContactView} />
</>
)
}
const AuthRouteGroup = () => {
return (
<>
<Route path={'/login'} component={LoginView} />
<Route path={'/logout'} component={LogoutView} />
</>
)
}
Таким образом, я могу использовать его следующим образом:
const AllRoutes = () => {
return (
<Switch>
<PublicRouteGroup /> {/* This works */}
<AuthRouteGroup /> {/* This doesn't */}
{/* This 404 is not a route group */}
<Route component={Error404View} />
</Switch>
)
}
Flipping <PublicRouteGroup />
и <AuthRouteGroup />
только изменяет порядок:
const AllRoutes = () => {
return (
<Switch>
<AuthRouteGroup /> {/* This works */}
<PublicRouteGroup /> {/* This doesn't */}
{/* This 404 is not a route group */}
<Route component={Error404View} />
</Switch>
)
}
Буду признателен за любые ваши идеи по этому поводу.
ОБНОВЛЕНИЕ № 1:
Это благодаря @skyboyer.При перемещении <Switch>
к дочерним компонентам и удалении его из компонента AllRoutes
каждый компонент начал отображаться.Похоже, добавление <Switch>
в AllRoutes
позволяет показывать только первый удар, как <Switch>
.Но теперь, удалив его, он показывает 404 в конце каждой страницы.
По сути, это выглядит так:
const AllRoutes = () => {
return (
<>
<Route component={AuthRouteGroup} /> {/* This works */}
<Route component={PublicRouteGroup} /> {/* This also works */}
{/* This 404 is not a route group */}
<Route component={Error404View} /> {/* Always shown at the bottom */}
{/* Even putting the 404 in its own RouteGroup yields the same issue */}
</>
)
}