我正在开发一个应用程序,我需要在不导致重新渲染的情况下更改页面的 url。
我正在调用以获取像这样的 componentDidMount 中的所有页面
componentDidMount() {
axios.get('/pages')
.then(response => {
this.setState({
pages: response.data,
slugs: response.data.pages.map(item => Slug(item.title))
})
})
拥有所有页面后,我想显示各个页面。例如。在url它必须像/page/1/slug-for-page-1
和/page/2/slug-for-page-2
基于状态变量activePageNumber
和活动页面的内容将被显示。相应的 slug 也应该在 url 上。
我尝试在 setState 之后添加一个回调,如下所示,但没有奏效。
() => this.props.history.push({
pathName: '/page',
state: {activePageNumber : activePageNumber},
})
我想添加一个子组件来管理 activePageNumber 状态,但我不确定它是否是最好的方法以及它是否会阻止重新渲染。
我可以实现它,以便每个页面向后端发出单独的请求,但我希望只调用一次,然后根据活动页码更新 url。
我不确定如何在react中实现这一点。
我有以下版本
“react-router-dom”:“^ 5.0.0”
“react”:“^ 16.8.6”