如何实现删除API对象后自动重新渲染页面,无需手动刷新?
解决删除后无需刷新更新组件的问题
你的问题根源在于删除操作完成后,既没有更新本地的apiData状态,调用history("/notes")也不会触发组件重新渲染(因为已经处于该路由)。以下是两种可行的解决方法:
方法一:删除后直接更新本地状态(推荐)
删除成功后,通过过滤本地数据中已删除的项来更新状态,无需再次请求API,效率更高:
const onDelete = (id) => { axios .delete(`https://6390acc765ff4183111b53e9.mockapi.io/notes/${id}`) .then(() => { // 过滤掉id匹配的项,更新本地状态 setApiData(prevData => prevData.filter(item => item.id !== id)); }); };
方法二:删除后重新请求最新数据
如果担心本地状态和服务器数据不一致,可以在删除成功后重新调用API获取完整数据:
const onDelete = (id) => { axios .delete(`https://6390acc765ff4183111b53e9.mockapi.io/notes/${id}`) .then(() => { // 重新获取最新的笔记列表 axios.get(`https://6390acc765ff4183111b53e9.mockapi.io/notes`) .then(getData => setApiData(getData.data)); }); };
另外,你可以删除原来的history("/notes")代码,因为它在当前路由下不会产生任何效果。
内容的提问来源于stack exchange,提问作者Wise.Wolf
相关产品推荐
相关产品推荐

