Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs路由器-this.props.history.push未呈现来自同一路径的URL查询_Reactjs_React Router - Fatal编程技术网

Reactjs路由器-this.props.history.push未呈现来自同一路径的URL查询

Reactjs路由器-this.props.history.push未呈现来自同一路径的URL查询,reactjs,react-router,Reactjs,React Router,我有一个使用history.push导航URL的组件。问题是其中一个URL路径依赖URL中的搜索参数来呈现组件的某些部分。当用户最初导航到url时,它可以正常工作,但是当用户在该路径内更新url时,它就不工作了。下面是一个例子: App.js 作业的url将包含作业ID,用于从后端检索数据-ex:/jobs?ID=6583ghawo90。使用该id,我在Jobs组件的componentDidMount内发出get请求以填充页面。在Jobs组件中,用户可以导航到一个新作业,该作业通过以下.prop

我有一个使用history.push导航URL的组件。问题是其中一个URL路径依赖URL中的搜索参数来呈现组件的某些部分。当用户最初导航到url时,它可以正常工作,但是当用户在该路径内更新url时,它就不工作了。下面是一个例子:

App.js

作业的url将包含作业ID,用于从后端检索数据-ex:/jobs?ID=6583ghawo90。使用该id,我在Jobs组件的componentDidMount内发出get请求以填充页面。在Jobs组件中,用户可以导航到一个新作业,该作业通过以下.props.history.push`/Jobs?id=${newjob.id}`更新url。问题是,当用户导航到更新的URL时,组件不会调用componentDidMount,因此不会请求新数据。我可以通过手动调用this.componentDidMount来修复此问题,但如果用户在浏览器中单击“后退”按钮,则此操作无效

我能做些什么来解决这个问题吗?

您不应该使用componentDidMount,但是:

如果您处于开发过程的开始阶段,我建议您使用钩子

<Router>
   <Route path="/jobs" component={Jobs} />
</Router>
componentDidUpdate(prevProps) {
  // compare previous jobId and current jobId
  // refetch data if needed
}