我正在使用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
。
如果您正在尝试加载数据,我建议您在路由器使用组件上的静态方法处理匹配之前获取数据。请查看此示例。React路由器Mega演示。这样,组件将加载数据并在路由参数更改时自动更新,而不需要依赖componentwillreceiveprops
。