我嘗試使用計算來觀看 navigator.onLine 但在重繪 網路之前無法作業?
<template><div>{{isOnline}}</div></template>
...
<scirpt>
...
computed: {
isOnline() {
return navigator.onLine;
},
},
...
</script>
uj5u.com熱心網友回復:
瀏覽器 api 不是反應式的。因此,每當它們的值發生變化時,Vue 都不知道。
要收聽navigator.onLine更改,您必須使用瀏覽器觸發的本機事件(請參閱檔案):
data () {
online: false,
}
methods: {
onOffline () => { this.online = false },
onOnline () => { this.online = true }
created() {
window.addEventListener('offline', this.onOffline)
window.addEventListener('online', this.onOnline)
}
destroyed() {
window.removeEventListener('offline', this.onOffline)
window.removeEventListener('online', this.onOnline)
}
}
注意:小心使用 SSR,window服務器上不存在。
uj5u.com熱心網友回復:
就像@Kaocash 說瀏覽器 API 不是反應式的,所以觀察者不會作業
原始答案:
好吧,當您的組件上的資料發生變化時,計算屬性將被更新,您需要的是一個觀察者:
<template><div>{{isOnline}}</div></template>
...
<script>
...
data() {
return {
isOnline: true
}
},
watch: {
'navigator.onLine'(val) {
this.isOnline = val
},
},
...
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/466458.html
