未在HashRouter路由更改上调用componentDidMount

时间:2019-05-27 09:45:12

标签: reactjs react-router

首先:我知道这里已经提出了这个问题,并且已经有解决方案。请先阅读全文,然后再将其标记为重复

我正在使用来自react-router-dom的HashRouter,我有以下简单路由:

<Route path='/folder/:folderId' component={FileArea} />

路由工作正常,但是很遗憾,更改路由后未调用我的componentDidMount函数。对于我的应用程序来说,这是至关重要的,因为每次路由更改以检索相应的数据时(根据folderId url参数),我都必须进行一次API调用。

我在互联网上使用componentWillReceiveProps找到了一个解决方案,这对我来说很好用,但显然此功能在以后的React版本中不再起作用:React Documentation

我也知道我在理论上可以使用static getDerivedStateFromProps(nextProps, prevState),但是此函数经常被调用,每次都进行api调用将很繁琐。

是否有componentWillReceiveProps的替代方法或调用componentDidMount的某种方法?

1 个答案:

答案 0 :(得分:3)

您可以使用componentDidUpdate()生命周期挂钩。

并使用该方法中的this.props.match.params.folderId来获取组件中的路线数据

要停止连续通话,请添加if条件,它只会在路线更改时通话。

我希望它能起作用!

相关问题