我正在使用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不会再次触发,因此不会刷新数据。我是否应该使用另一个生命周期事件来触发我的数据请求,或者使用其他策略来解决此问题?
如果链接仅通过不同的参数指向同一条路线,则它不是重新安装,而是接收新的道具。因此,您可以使用该componentWillReceiveProps(newProps)函数并查找newProps.params.projectId。
componentWillReceiveProps(newProps)
newProps.params.projectId
如果您要加载数据,我建议在路由器使用组件上的静态方法处理匹配之前获取数据。看看这个例子。反应路由器兆演示。这样,该组件将加载数据并在路由参数更改时自动更新,而无需依赖componentWillReceiveProps。
componentWillReceiveProps