React-router,URL 参数,并以编程方式重定向

React-router, URL params, and redirect programatically

我目前在使用 React-router v4 时遇到一些问题,在使用 URL 参数时会发生重定向。 这是我正在使用的路线:

<Route path="/blog/page/:number" component={Blog} />

我正在使用 UI 框架 Semantic-ui-react 及其组件分页(https://react.semantic-ui.com/addons/pagination#pagination-example-shorthand),我无法将其元素呈现为 React 中的链接或导航链接-路由器-dom.

相反,我必须使用事件函数 onPageChange(activePage),它允许我重定向到单击的页面。 我想出了一种方法,通过从 react-router-dom 渲染一个 <Redirect to={location} push /> 组件,它工作 quite 很好,除了它 requires a组件更新管理,因为它不会重新挂载组件博客...

我的问题是,我无法使用浏览器的 (chrome) 按钮向前和向后导航,它只是修改 URL 而不会重新安装组件。 由于我没有控制浏览器 "previous" 和 "next" 按钮的钩子,我想知道如何修复它。 谢谢。

react-router 具有内置的历史管理功能,您可以使用 push(new_location) 功能进行导航。

我找到了一个方法。 实际上,当您按下浏览器的上一个和下一个按钮时,如果您使用的是同一个组件,则会触发生命周期的方法 componentWillUpdate() 和 componentDidUpdate()。 我用 this.props.history.location 解析 URL,现在,我可以确保在按下这些按钮时组件将使用正确的数据重新呈现。