Vue3判断/监控是否在线

Vue3判断/监控是否在线

回顾JavaScript中的在线判断

navigator.online

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

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!