首页 > 解决方案 > React 路由器在更改路由和返回时保留查询参数

问题描述

我有一个基于react-router v4. 每个页面都有url query基于过滤器的过滤器,这意味着过滤器设置存储在 url 上,例如mysite.com/page1?filterKey=value.

我的目标是在用户从另一个页面(mysite.com/page2)返回时保留查询中的过滤值。

标签: reactjsreact-router

解决方案


我看到的唯一两种方法是按照 Will Jenkins 的建议使用 redux,或者在父容器中设置状态(App.js 或处理路由的文件):

  • 在父容器中,定义函数
setQuery = query => this.setState({query})
  • 将函数传递给子组件

  • 在子组件中,传递对 componentDidMount 的查询:

componentDidMount (){
    this.setQuery( decodeURIComponent(querySearch(this.props.location.search).param) )
}

推荐阅读