【发布时间】:2020-05-06 19:19:42
【问题描述】:
我正在开发一个类似 React js 博客的网站,但在管理路线时遇到了一些麻烦。我的带有文章 URL 的页面是这样的:website/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>
如果 activePage 为 1,我想将“/Page/:activePage”路由到路由“/”呈现的组件。因此组件将相同(页面),但路径会不同。
Router 中的条件渲染可以解决问题吗?如果可以,如何解决?我当时在想一些事情:
<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" cannot be called inside a callback. React Hooks must be called in a React function component or a custom React Hook function react -钩子/钩子规则)
我用常数值 1 而不是 activePage 参数测试了 sn-p,它确实重定向,所以基本上让我有一个问题,即如何从路径中检索参数?
【问题讨论】:
-
听起来你应该在
<Page>组件中处理重定向,而不是内联渲染函数。 -
嗯。没想到这个,试试。谢谢!
标签: reactjs conditional-statements router