回顾JavaScript中的在线判断
navigator.online
可以检查用户当前是否在线。如果在线为true,离线为false。
console.log(navigator.online)
online事件/offline事件
navigator.online
只是获取当前的在线状态。因此,不可能执行比如“上线时做某事”之类的监视过程。
所以我们可以使用在线和离线事件来监控在线状态。online
事件上线时触发,offline
事件下线时触发。
window.addEventListener('online', () => {
console.log('上线啦')
})
window.addEventListener('offline', () => {
console.log('下线啦')
})
与 Vue3 一起使用
允许Vue3被动地确定和监控在线状态。以navigator.online
为初始值,通过在线和离线事件来监控和切换在线状态。
<script lang="ts" setup>
import {ref, watch} from "vue";
//其值初始化为navigator.onLine,即当前是否在线
const isOnline = ref(navigator.onLine)
//使用addEventListener函数监听了online和offline事件
window.addEventListener('online',()=>{
isOnline.value = true
})
window.addEventListener('offline',()=>{
isOnline.value = false
})
//监听isOnline变化
watch(isOnline,()=>{
if (isOnline.value){
console.log('在线')
}else{
console.log('下线')
}
},{immediate:true})
</script>
我们使用watch
函数监听isOnline
变量的变化,并在变化时执行回调函数。watch
函数的第一个参数是要监听的变量,第二个参数是回调函数,当isOnline
变化时,回调函数会被执行。我们在回调函数中判断isOnline
的值,如果为true,则表示在线,否则表示下线,并在控制台输出相应的信息。注意,我们在watch
函数的第三个参数中设置了immediate
为true,这表示在组件挂载时立即执行一次回调函数,以便我们能够在页面加载时知道当前是否在线。
封装一个useOnline
我们可以将上面的代码进行一下封装。我们可以创建一个useOnline.ts
文件。
//useOnline.ts
import { ref } from 'vue'
export default function useOnline() {
const isOnline = ref(navigator.onLine)
window.addEventListener('online', () => {
isOnline.value = true
})
window.addEventListener('offline', () => {
isOnline.value = false
})
return { isOnline }
}
在使用的地方引入就行了。
<script lang="ts" setup>
import { watch} from "vue";
import useOnline from "../useOnline.ts";
const { isOnline } = useOnline()
//监听isOnline变化
watch(isOnline,()=>{
if (isOnline.value){
console.log('在线')
}else{
console.log('下线')
}
},{immediate:true})
</script>
以上就是今日分享的文章,大家周末愉快,晚安哟!
原文始发于微信公众号(大前端编程教学):Vue3判断/监控是否在线
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224118.html