首先:我知道这里已经提出了这个问题,并且已经有解决方案。请先阅读全文,然后再将其标记为重复
我正在使用来自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
的某种方法?
答案 0 :(得分:3)
您可以使用componentDidUpdate()生命周期挂钩。
并使用该方法中的this.props.match.params.folderId
来获取组件中的路线数据
要停止连续通话,请添加if
条件,它只会在路线更改时通话。
我希望它能起作用!