uniapp自定義網(wǎng)絡(luò)檢測組件項(xiàng)目實(shí)戰(zhàn)總結(jié)分析
導(dǎo)語
很多時(shí)候手機(jī)設(shè)備會突然沒網(wǎng),這時(shí)候就需要一個(gè)網(wǎng)絡(luò)檢測組件,在沒網(wǎng)的時(shí)候顯示提示用戶,提供用戶體驗(yàn)。
準(zhǔn)備工作
- 在
components新建一個(gè)q-online文件夾,并新建一個(gè)q-online.vue的組件; - 按照前一篇所說的頁面結(jié)構(gòu),編寫好預(yù)定的網(wǎng)絡(luò)檢測頁面;
原理分析
主要是使用uni.onNetworkStatusChange來判斷網(wǎng)絡(luò)狀態(tài),然后根據(jù)狀態(tài)調(diào)整頁面樣式顯示網(wǎng)絡(luò)提示。
組件實(shí)現(xiàn)
準(zhǔn)備工作和原理分析完成后,接下來寫一個(gè)網(wǎng)絡(luò)檢測頁面。
模板部分
這里提供了兩種提示,一種是全屏顯示,一種是頂部顯示,支持自定義插槽。
<view class="q-online" v-if="show">
<slot name="content">
<view :class="{'q-online-inner': true, [props.type]: true}">
<q-icon
class="q-online-icon"
:name="props.type == 'top' ? 'info-circle' : 'wifi'"
:size="props.type == 'top' ? 20 : 52"
color="#f30d0d" />
<text class="q-online-txt">您的網(wǎng)絡(luò)已斷開,請檢查連接!</text>
</view>
</slot>
</view>樣式部分
.q-online {
.q-online-inner {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100rpx;
background: $netBg;
.q-online-icon {
margin-right: 20rpx;
}
.q-online-txt {
color: $netColor;
font-size: 30rpx;
}
&.full {
position: absolute;
top: 0;
left: 0;
flex-direction: column;
height: 100%;
background: $white;
z-index: 39;
.q-online-txt {
margin-top: 30rpx;
font-size: 36rpx;
}
}
}
}腳本部分
- 引入依賴包和屬性設(shè)置
import { ref } from "vue";
import { onLoad } from "@dcloudio/uni-app";
// 頁面屬性
let show = ref(false);
// 顯示類型
const props = defineProps({
type: {
type: String,
default: "top", // top 頂部 full 全屏
},
});
// 狀態(tài)發(fā)送
const emits = defineEmits(["change"]);- 方法定義
// 頁面方法
// 顯示
onLoad((option) => {
checkNet();
});
// 檢測網(wǎng)絡(luò)
function checkNet() {
uni.onNetworkStatusChange((res) => {
const status = res.isConnected;
show.value = !status;
emits("change", status);
let title = status ? "網(wǎng)絡(luò)已連接!" : "網(wǎng)絡(luò)已斷開!",
icon = status ? "success" : "error";
uni.showToast({
title,
icon,
});
});
}實(shí)戰(zhàn)演練
模板使用
<!-- 頂部風(fēng)格 --> <q-online type="top" /> <!-- 全屏風(fēng)格 --> <q-online type="full" @change="getNetStatus" />
腳本使用
// 獲取網(wǎng)絡(luò)狀態(tài)
function getNetStatus(val) {
console.log(`網(wǎng)絡(luò)狀態(tài):${val ? "有網(wǎng)" : "無網(wǎng)"}`);
}案例展示
頂部效果


全屏效果


最后
以上就是uniapp自定義網(wǎng)絡(luò)檢測組件項(xiàng)目實(shí)戰(zhàn)總結(jié)分析的詳細(xì)內(nèi)容,更多關(guān)于uniapp網(wǎng)絡(luò)檢測組件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS實(shí)現(xiàn)自動(dòng)輪播圖效果(自適應(yīng)屏幕寬度+手機(jī)觸屏滑動(dòng))
這篇文章主要介紹了JS實(shí)現(xiàn)自動(dòng)輪播圖效果(自適應(yīng)屏幕寬度+手機(jī)觸屏滑動(dòng)),需要的朋友可以參考下2017-06-06
小程序中監(jiān)聽頁面滾動(dòng)的幾種方法實(shí)例
這段時(shí)間接了一個(gè)微信小程序項(xiàng)目,從此打開小程序的新世界大門,下面這篇文章主要給大家介紹了關(guān)于小程序中監(jiān)聽頁面滾動(dòng)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Layui Form 自定義驗(yàn)證的實(shí)例代碼
今天小編就為大家分享一篇Layui Form 自定義驗(yàn)證的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
uni-app使用Vite.config.js配置文件的超詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于uni-app使用Vite.config.js配置文件的超詳細(xì)教程,在uniapp開發(fā)中,vue.config.js是配置webpack的關(guān)鍵文件之一,也可以說是uniapp項(xiàng)目自定義配置的中心,需要的朋友可以參考下2023-12-12
一文詳解Three.js與Babylon.js的主要區(qū)別是什么
Babylon.js和Three.js之間的第一個(gè)區(qū)別是Babylon.js是一個(gè)實(shí)時(shí)3D引擎,使用HTML5后顯示3D圖形,這篇文章主要介紹了Three.js與Babylon.js主要區(qū)別是什么的相關(guān)資料,需要的朋友可以參考下2025-12-12
Radio 單選JS動(dòng)態(tài)添加的選項(xiàng)onchange事件無效的解決方法
radio 單選JS動(dòng)態(tài)添加的選項(xiàng),onchange事件無效。使用delegate()函數(shù)可以解決該問題,具體解決方案大家通過本文詳細(xì)了解下2016-12-12
JavaScript實(shí)現(xiàn)給浮點(diǎn)數(shù)添加千分位逗號的多種方法
JavaScript 是一門強(qiáng)大的前端語言,在處理數(shù)值格式化時(shí)提供了多種方法,在開發(fā)過程中,我們經(jīng)常需要將大數(shù)字格式化,使其更具可讀性,例如,將 12000000.11 轉(zhuǎn)換為 12,000,000.11,本文將詳細(xì)介紹 JavaScript 中如何實(shí)現(xiàn)這種格式化,需要的朋友可以參考下2025-04-04

