路由参数更改时,组件不会重新安装

我正在使用react-router开发一个React应用程序。我有一个项目页面,其URL如下:


myapplication.com/project/unique-project-id

当项目组件加载时,我从componentDidMount事件触发了对该项目的数据请求。我现在遇到一个问题,即如果我直接在两个项目之间切换,那么只有id会这样改变...


myapplication.com/project/982378632

myapplication.com/project/782387223

myapplication.com/project/198731289

componentDidMount不会再次触发,因此不会刷新数据。我是否应该使用另一个生命周期事件来触发我的数据请求,或者使用其他策略来解决此问题?


蝴蝶刀刀
浏览 664回答 3
3回答

翻阅古今

如果链接仅通过不同的参数指向同一条路线,则它不是重新安装,而是接收新的道具。因此,您可以使用该componentWillReceiveProps(newProps)函数并查找newProps.params.projectId。如果您要加载数据,我建议在路由器使用组件上的静态方法处理匹配之前获取数据。看看这个例子。反应路由器兆演示。这样,该组件将加载数据并在路由参数更改时自动更新,而无需依赖componentWillReceiveProps。

慕容3067478

如果在更改路线时确实需要重新安装组件,则可以将唯一键传递给组件的key属性(该键与您的路径/路由相关联)。因此,每次路线更改时,密钥也会更改,从而触发React组件卸载/重新安装。我从这个答案中得到了主意
打开App,查看更多内容
随时随地看视频慕课网APP