如何让 window.location.reload(true) 只重新加载正确的页面?
How do I get window.location.reload(true) to only reload the correct page?
在我的 React 应用程序中,我的所有页面上都有以下代码,其中两个除外
componentWillMount() {
setInterval(function() {
window.location.reload(true);
}, 300000);
}
但是,代码不在的页面仍然会重新加载,除非我在继续这些页面时刷新它们。为什么会发生这种情况,如何让这些页面在不刷新的情况下不重新加载?
这两个页面的window.location.hash属性是'#/credit-request'和'#/support-ticket',我也尝试过在页面中添加以下代码,但是得到相同的结果
componentWillMount() {
if (window.location.hash != '#/credit-request' && window.location.hash != '#/support-ticket') {
setInterval(function() {
window.location.reload(true);
}, 300000);
}
}
我也尝试在 html 页面中通过在正文标记中添加以下脚本来执行此操作,但仍然得到相同的结果
<script>
if (location.hash != '#/credit-request' && location.hash != '#/support-ticket') {
setInterval(function() {
window.location.reload();
}, 300000);
}
</script>
您需要在 unmount
组件之后执行 clearInterval
(即转到不同的页面)。如果您不这样做,那么即使您离开组件,setInterval 也会保持 运行。
修复
class MyComponent extends React.Component {
...
intervalId = null;
componentDidMount() {
this.intervalId = setInterval(() => window.location.reload(true), 30000);
}
componentWillUnmount() {
clearInterval(this.intervalId);
}
}
...
在我的 React 应用程序中,我的所有页面上都有以下代码,其中两个除外
componentWillMount() {
setInterval(function() {
window.location.reload(true);
}, 300000);
}
但是,代码不在的页面仍然会重新加载,除非我在继续这些页面时刷新它们。为什么会发生这种情况,如何让这些页面在不刷新的情况下不重新加载?
这两个页面的window.location.hash属性是'#/credit-request'和'#/support-ticket',我也尝试过在页面中添加以下代码,但是得到相同的结果
componentWillMount() {
if (window.location.hash != '#/credit-request' && window.location.hash != '#/support-ticket') {
setInterval(function() {
window.location.reload(true);
}, 300000);
}
}
我也尝试在 html 页面中通过在正文标记中添加以下脚本来执行此操作,但仍然得到相同的结果
<script>
if (location.hash != '#/credit-request' && location.hash != '#/support-ticket') {
setInterval(function() {
window.location.reload();
}, 300000);
}
</script>
您需要在 unmount
组件之后执行 clearInterval
(即转到不同的页面)。如果您不这样做,那么即使您离开组件,setInterval 也会保持 运行。
修复
class MyComponent extends React.Component {
...
intervalId = null;
componentDidMount() {
this.intervalId = setInterval(() => window.location.reload(true), 30000);
}
componentWillUnmount() {
clearInterval(this.intervalId);
}
}
...