Bog*_*ert 4 class reload reactjs
我有一个反应应用程序,其页面上有一个类组件。我想做的是在第一次加载该页面时仅刷新该页面一次,但我尝试过的所有操作(例如使用 window.location.reload() )最终都会陷入无限刷新循环。有谁知道如何做到这一点?我有一个功能组件,我喜欢这样,它可以工作:
useEffect(() => {
if(reloadCount < 2) {
sessionStorage.setItem('reloadCount', String(reloadCount + 1));
window.location.reload();
} else {
sessionStorage.removeItem('reloadCount');
}
}, []);
Run Code Online (Sandbox Code Playgroud)
但如果我将它转换为类组件,像这样,它就不起作用:
componentDidMount() {
if(this.reloadCount < 2) {
sessionStorage.setItem('reloadCount', String(this.reloadCount + 1));
window.location.reload();
} else {
sessionStorage.removeItem('reloadCount');
}
}
Run Code Online (Sandbox Code Playgroud)
知道如何在反应类组件中做到这一点吗?
PS我想这样做是因为我使用了一个mapbox组件,它将之前初始化的地图保存到DOM中,因此当用户返回到包含地图的页面时,不需要再次初始化地图。但现在我在另一个页面上也有这个地图,如果我在包含该地图的两个页面之间导航,它会保留上一页的 css,并且会变得混乱。我可以解决此问题的唯一方法是强制刷新页面。
小智 7
也许这会解决你的问题
componentDidMount() {
const reloadCount = sessionStorage.getItem('reloadCount');
if(reloadCount < 2) {
sessionStorage.setItem('reloadCount', String(reloadCount + 1));
window.location.reload();
} else {
sessionStorage.removeItem('reloadCount');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9779 次 |
| 最近记录: |