编程语言
首页 > 编程语言> > javascript – React router:组件不更新url搜索参数更改

javascript – React router:组件不更新url搜索参数更改

作者:互联网

我有一个使用URL搜索参数的React应用程序.根据搜索参数v的值,该组件应该显示不同的内容.

可能的URL可能如下所示:

http://localhost:3000/hello?v=12345

一旦v查询参数在URL中更改,我希望我的组件更新.

http://localhost:3000/hello?v=6789

我正在使用我的App组件中的react-router来根据路由显示不同的组件. App组件包装在BrowserRouter组件中.

render() {
  return (
    <Switch>
      <Route path="/hello" component={Hello}></Route>
      <Route path="/" component={Home}></Route>
    </Switch>
  );
}

如果用户点击了某些内容并且URL搜索参数发生了变化,我希望该组件显示不同的内容.目前,URL搜索参数确实发生了变化,但组件不会再次渲染.有任何想法吗?

解决方法:

您没有提供足够的信息,因此我无法100%确定您出错的地方,但我现在可以在您的代码中看到1个问题.首先,您必须让路由器知道您将使用参数.所以例如下面的代码

render() {
  return (
    <Switch>
      <Route path="/hello/:yourParam" component={Hello}></Route> // you need the colon here
      <Route path="/" component={Home}></Route>
    </Switch>
  );
}

上面将告诉路由可以从URL访问名为yourParam的参数

然后必须在组件中访问它并以某种方式放入渲染函数(使用它从数据库中检索数据以呈现数据,直接渲染参数等).

例如下面

render(){
    <div>
        {this.props.match.params.yourParam}
    </div>
}

这样,每次有param更改时,您的组件都将重新呈现.

编辑

由于您希望使用查询而不是参数,因此您必须通过转发来检索它. this.props.match.query.v.您仍然必须确保根据查询更改呈现变量

标签:react-router-v4,javascript,reactjs,react-router
来源: https://codeday.me/bug/20190910/1798681.html