【问题标题】:React Router: hashHistory appending query params doesn't rerenderReact Router:hashHistory 附加查询参数不会重新渲染
【发布时间】:2017-03-16 09:27:12
【问题描述】:

目前,我有一个带有运行此处理程序的组件:

_redirect () {
  hashHistory.push(`/somepath?a=1&b=2`)
}

/somepath 的路由组件被配置为抓取查询参数并将它们存储在状态中,如下所示:

class SomeComponent extends React.Component {
  constructor (props) {
    super(props)
    this.state = {
      a: this.props.location.query.a || 5,
      b: this.props.location.query.b || -2,
    }
  }

如果我目前走的是不同的道路,那么一切都会完美无缺。我遇到的问题是,如果我已经在 /somepath 中没有参数并且我执行处理程序,则参数将附加到 url(在 url 栏中路径更改为 /somepath?a=1&b=2),但是页面本身不会重新呈现。

我知道构造函数仅在初始页面加载时执行,这解释了为什么它不获取查询参数并将其存储在状态中,除非它是新的重新加载。 有没有办法让页面对hashHistory.push()附加的新参数敏感?

【问题讨论】:

  • 请提供一些代码以查看问题所在
  • @RazvanAlex 完成!

标签: reactjs react-router


【解决方案1】:

您可以在componentDidMountcomponentDidUpdate 中获取查询参数。当您第一次路由 /somepath 时,将调用 SomeComponentcomponentDidMount。然后改成/somepath?a=1&b=2,会调用componentDidUpdate(此时不会调用componentDidMount)。

请参阅this document。看看它是如何从/invoices/123 导航到/invoices/789

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2023-03-13
    • 2020-07-06
    • 1970-01-01
    • 2023-03-28
    • 2020-09-05
    相关资源
    最近更新 更多