Я занимаюсь разработкой блога, похожего на блог React js, и нахожу некоторые проблемы с управлением маршрутами. Мои страницы с URL-адресами статей выглядят так: веб-сайт / pages / 3
Я бы хотел перенаправить на домашнюю страницу, когда индекс страницы равен 1, поскольку домашняя страница по умолчанию является первой страницей со статьями. Мой маршрутизатор выглядит так:
<Router>
<Switch>
<Route exact path="/" render={() => <Page postsPerPage={3}/>} />
<Route exact path="/Page/:activePage" render={() => <Page postsPerPage={3}/>} />
<Route path="/Login" component={Login} />
<PrivateRoute path="/AddPost" component={AddPost} />
<Route path="/:postLocation" component={Post} />
</Switch>
</Router>
Я хотел бы направить "/ Page /: activePage" к компоненту, который отображает маршрут "/", если activePage равен 1. Таким образом, компонент будет таким же ( Страницы), но путь будет другим.
Может ли условный рендеринг в маршрутизаторе добиться цели, и если да, то как? Я думал о чем-то вроде этого:
<Route exact path="/Page/:activePage" render={() =>
{
let {activePage} = useParams()
if (activePage == 1) return (<Redirect to="/"/>)
else return(<Page postsPerPage={3}/>)
}
}/>
Однако кажется, что React недоволен тем, что я использую там useParams (есть ошибка компиляции: React Hook "useParams" нельзя вызвать внутри обратного вызова. React Hooks должен быть вызван в компоненте функции React или в пользовательской функции React Hook-реакции-hooks / rules-of-hooks)
Я тестировал этот фрагмент с постоянным значением 1 вместо параметра activePage, и он действительно перенаправлял так это в основном оставляет меня с вопросом о том, как я могу получить параметр из пути?