uniapp自定義網(wǎng)絡(luò)檢測組件項(xiàng)目實(shí)戰(zhàn)總結(jié)分析
導(dǎo)語
很多時(shí)候手機(jī)設(shè)備會(huì)突然沒網(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)文章
JavaScript箭頭函數(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JavaScript箭頭函數(shù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Javascript獲取background屬性中url的值
Javascript獲取CSS中屬性值方法有很多,今天工作的時(shí)候遇到了一個(gè)問題是需要利用Javascript獲取css中background-img屬性url的值,通過查閱網(wǎng)站的資料找到了解決方法,現(xiàn)在將方法分享給大家,有需要的朋友們們可以參考借鑒,下面來一起看看吧。2016-10-10
JavaScript裝飾器函數(shù)(Decorator)實(shí)例詳解
這篇文章主要介紹了JavaScript裝飾器函數(shù)(Decorator),結(jié)合實(shí)例形式分析了JavaScript裝飾器函數(shù)(Decorator)的功能、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2017-03-03
ionic App問題總結(jié)系列之ionic點(diǎn)擊系統(tǒng)返回鍵退出App
本篇文章主要介紹了ionic App問題總結(jié)系列之ionic點(diǎn)擊系統(tǒng)返回鍵退出App,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
layui固定下拉框的顯示條數(shù)(有滾動(dòng)條)的方法
今天小編就為大家分享一篇layui固定下拉框的顯示條數(shù)(有滾動(dòng)條)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JS實(shí)戰(zhàn)例子之實(shí)現(xiàn)自動(dòng)打字機(jī)動(dòng)效
什么是打字機(jī)效果呢?打字機(jī)效果即為文字逐個(gè)輸出,實(shí)際上就是一種Web動(dòng)畫,下面這篇文章主要給大家介紹了關(guān)于JS實(shí)戰(zhàn)例子之實(shí)現(xiàn)自動(dòng)打字機(jī)動(dòng)效的相關(guān)資料,需要的朋友可以參考下2023-01-01
js實(shí)現(xiàn)把圖片的絕對路徑轉(zhuǎn)為base64字符串、blob對象再上傳
本文主要介紹了JavaScript把項(xiàng)目本地的圖片或者圖片的絕對路徑轉(zhuǎn)為base64字符串、blob對象再上傳的方法,具有一定的參考價(jià)值,需要的朋友一起來看下吧2016-12-12
IE8利用自帶的setCapture和releaseCapture解決iframe的拖拽事件方法
最近有個(gè)需求須要實(shí)現(xiàn)左右拖拽功能,頁面右邊是個(gè)iframe頁面,在chrome測試通過之后,發(fā)現(xiàn)在ie8上面效果不是很理想,查閱相關(guān)資料找到可以使用ie自帶的setCapture和releaseCapture來解決,需要的朋友可以參考下2016-10-10

