需求如下: 在页面上显示服务器的时间, 每隔十分钟与服务器同步一次,在此期间,前端使用定时器进行递增显示时间,在正常情况下是可以的。但是在页面切换到后台之后,由于浏览器的机制导致定时器执行比预期的慢,页面显示回来的时候,时间已经比预期的慢一点了,
let interTimer: any = 0
let hiddTime = 0
let hasLoading = true
const GetTime = () => {
const [time, setTime] = useState((dayjs().valueOf())
useEffect(() => {
loadNTPTime()
const inters = setInterval(
() => {
loadNTPTime()
},
1000 * 60 * 10,
)
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
const diffTime = Math.floor((new Date().getTime() - hiddTime) / 1000)
if (diffTime > 60 && hasLoading) {
hasLoading = false
loadNTPTime()
}
} else if (document.visibilityState === 'hidden') {
hiddTime = new Date().getTime()
hasLoading = true
}
})
return () => {
clearInterval(inters)
}
}, [])
useEffect(() => {
console.log(time) // 在页面切换后台后,再回来,这里不会执行了,页面也不显示更新了,但是定时器还是执行的
}, [time])
const loadNTPTime = async () => {
const response = await http.get('/app/time')
const { data } = formatResponse(response)
if (data) {
let millsecond = dayjs(data).valueOf()
setTime(dayjs(data))
if (interTimer) {
clearInterval(interTimer)
}
interTimer = setInterval(() => {
millsecond += 1000
setTime(dayjs(millsecond))
}, 1000)
} else {
setTime('--')
}
}
return <div>{time}</div>
}
想通过页面切换后,重新加载服务器时间进行更新,但是无效果
最后使用了worker 进行刷新的。
浏览器会暂停后台标签页的脚本的执行。但是你可以监听页面进入后台和恢复前台的事件。
正在学习 React 不懂为什么用了 useEffect 还会发起两次请求,应该怎么解决?
问题内容: 好的,我有一个仅包含的简单表格。当我们点击submit(通过ajax存储)时,在文本字段中写入的数据将存储在DB中。Ajax可以正常工作并提交数据,但是,页面会自动刷新,并且URL包含输入字段的内容。 我的表格: 阿贾克斯:- PHP的:- 结果显示在后,页面将刷新,URL变为: -chat.php?message = 454545&submit_message = 为什么要刷新页面?
在我的应用程序中,用户登录后我有一个主页和一些其他页面。问题是,当我在其中一个页面中刷新页面时,它会再次将我发送到主页。这是我的路线: 应用程序组件具有路由器出口 那么,我期待什么呢?首先,如果我是我的“列表”页面()并且我刷新了这个页面,它应该留在那里。在那一页。但现在它将我重定向到本地主机:4200/home。当然,当我单击一个列表项时,它应该将我发送到本地主机:4200/detail/ite
背景 前端由React构建。 后端使用Envoy作为流量网关,listeners的路由部分配置如下: Envoy将下游请求代理到由Go编写的HTTP服务器,服务器内部路由的处理如下: 问题 只要带路径,刷新浏览器就报404。 疑惑 我知道是因为React Router的原因,也知道服务器为Nginx或者httpd时的解决方案。 但通过Envoy➕Go部署时,Envoy的prefix已经将所有路径的
本文向大家介绍JavaScript实现页面定时刷新(定时器,meta),包括了JavaScript实现页面定时刷新(定时器,meta)的使用技巧和注意事项,需要的朋友参考一下 接下来进入正题-定时不断刷新页面的方法: 1.看到定时,很容易想到js的定时器: 2.通过meta来设置: 以上所述是小编给大家介绍的JavaScript实现页面定时刷新(定时器,meta),希望对大家有所帮助,如果大家有任
两个页面切换,如何禁止刷新呢?不借助浏览器缓存方法,比如localStorage、sessionStorage, 切换会重新刷新页面,想要的结果是第一次切换刷新后,再次切换到当前页面无需刷新,就跟antd的Tabs一样效果 比如下面两个页面,用Radio来互相切换,比如第一个ChildComponents_1页面input输入“测试”内容,切换到ChildComponents_2,再切换Child