【发布时间】:2021-11-02 06:39:20
【问题描述】:
如何在组件中单击<Link> 时捕获?第一次单击链接时,页面加载正常。但是,当您再次单击同一链接时,它不会重新加载数据。这是标准结果,因为它仅在状态/道具发生变化时重新渲染,但我想在重新访问页面时从服务器重新加载新数据。
我尝试过使用componentDidUpdate,但这只会以无限循环结束。我正在寻找一种方法来了解何时使用 react-router-dom 并查询服务器以获取新数据。
我列出了下面使用的分解代码片段。
<Switch>
<Route path="/users" component={Users}/>
</Switch>
<Link to={"/users"}>Users</Link>
class Users extends Component {
componentDidMount() {
this.getData();
console.log('componentDidMount');
}
componentDidUpdate(nextProps, nextState) {
console.log('componentDidUpdate');
}
getData() {
axios.get(this.props.table.url).then(response => {
this.setState({ users: response.data, loading: false})
})
}
render() {
return( ... )
}
}
【问题讨论】:
-
当您按下
Link按钮时,路由已更改为“用户”,每次更改路由时,componentDidMount都会调用。如果它不适用于您的应用程序,我建议您创建一个代码框。 -
另外一个问题,
Link按钮在另一个页面(路由)上,所以当你点击它时,路由已经变成/user所以怎么才能第二次点击Link?user页面上有吗?
标签: reactjs react-router react-router-dom