uniapp中的路由、本地存儲與網絡請求

navigator

在UniApp中,navigator 組件用于頁面跳轉和應用內導航。

基本使用

  • 屬性
    • url: 需要跳轉的目標頁面路徑,路徑可以是相對路徑或絕對路徑。
    • open-type: 跳轉的方式,默認為 navigateTo。其他可選值包括:redirectTo, switchTab, reLaunch, navigateBack

open-type

  1. navigateTo: 推入目標頁面到棧頂,即打開新頁面(默認)。

    • 示例: <navigator url="/pages/index/index" open-type="navigate-to">跳轉到首頁</navigator>
  2. redirectTo: 關閉當前頁面,跳轉到應用內的某個頁面。

    • 示例: <navigator url="/pages/index/index" open-type="redirect-to">重定向到首頁</navigator>
  3. switchTab: 跳轉到 tabBar 頁面,并關閉其他所有非 tabBar 頁面。

    • 示例: <navigator url="/pages/tabBarPagePath" open-type="switch-tab">切換到tabBar頁面</navigator>
  4. reLaunch: 關閉所有頁面,打開到應用內的某個頁面。

    • 示例: <navigator url="/pages/reLaunchPagePath" open-type="reLaunch">重啟并跳轉到指定頁面</navigator>
  5. navigateBack: 返回上一頁面或多級頁面。

    • 可以通過 delta 屬性指定返回的層級,默認為1。
    • 示例: <navigator open-type="navigate-back" delta="2">返回上兩級</navigator>

注意事項

  • 使用 navigator 時,確保目標頁面已經在 pages.json 中注冊。
  • 當使用 switchTab 作為 open-type 時,url 參數需要是一個已經定義在 tabBar 列表中的路徑。
  • 在小程序環境中,頁面棧的最大深度是有限制的(通常是10層),超過限制后無法繼續使用 navigateTo 進行跳轉。

事件

  • tap: 點擊事件,可以用來處理點擊跳轉前的邏輯。
  • success: 成功后的回調函數。
  • fail: 失敗后的回調函數。
  • complete: 不管成功或失敗都會執行的回調函數。
1. uni.setStorage(OBJECT)

將數據存儲到本地緩存中指定的key中,會覆蓋掉原來該key對應的內容,這是一個異步接口。

  • 參數:
    • key: String 類型,必填,指定存儲的鍵。
    • data: Any 類型,必填,需要存儲的數據,只支持原生類型及能夠通過JSON.stringify序列化的對象。
    • success: Function 類型,選填,接口調用成功的回調函數。
    • fail: Function 類型,選填,接口調用失敗的回調函數。
    • complete: Function 類型,選填,接口調用結束的回調函數(無論成功或失敗都會執行)。
uni.setStorage({key: 'storage_key',data: 'hello',success: function () {console.log('success');}
});

注意:避免使用以uni-uni_dcloud-dcloud_為前綴的key,這些是系統保留的關鍵字。

同步版本為uni.setStorageSync(KEY, DATA)

2. uni.getStorage(OBJECT)

從本地緩存中異步獲取指定key對應的內容。

  • 參數:
    • key: String 類型,必填,指定要獲取的鍵。
    • success: Function 類型,必填,接口調用成功的回調函數,返回值包含data字段。
    • fail: Function 類型,選填,接口調用失敗的回調函數。
    • complete: Function 類型,選填,接口調用結束的回調函數。
uni.getStorage({key: 'storage_key',success: function (res) {console.log(res.data);}
});

同步版本為uni.getStorageSync(KEY)

3. uni.getStorageInfo(OBJECT)

異步獲取當前storage的相關信息,包括所有key、當前占用空間大小以及限制的空間大小。

  • 參數:
    • success: Function 類型,必填,接口調用成功的回調函數,返回值包含keyscurrentSizelimitSize字段。
    • fail: Function 類型,選填,接口調用失敗的回調函數。
    • complete: Function 類型,選填,接口調用結束的回調函數。
uni.getStorageInfo({success: function (res) {console.log(res.keys);console.log(res.currentSize);console.log(res.limitSize);}
});

同步版本為uni.getStorageInfoSync()

4. uni.removeStorage(OBJECT)

從本地緩存中異步移除指定key的數據。

  • 參數:
    • key: String 類型,必填,指定要移除的鍵。
    • success: Function 類型,必填,接口調用成功的回調函數。
    • fail: Function 類型,選填,接口調用失敗的回調函數。
    • complete: Function 類型,選填,接口調用結束的回調函數。
uni.removeStorage({key: 'storage_key',success: function (res) {console.log('success');}
});

同步版本為uni.removeStorageSync(KEY)

5. 清理本地數據緩存
  • 異步清理:uni.clearStorage()
  • 同步清理:uni.clearStorageSync()

網絡請求

在UniApp中進行網絡請求是一個核心的功能,它允許開發者與服務器進行數據交互。UniApp提供了多種方式進行網絡請求,主要包括uni.requestuni.uploadFileuni.downloadFile等方法。

1. 使用 uni.request 發起網絡請求

uni.request 是 UniApp 提供的一個用于發起 HTTP 請求的方法,支持 GET、POST 等常見的 HTTP 方法。該方法可以配置請求頭、請求參數,并處理響應數據。

uni.request({url: '請求URL', // 必填,請求的URL地址method: 'GET', // 可選,默認為GETheader: {'content-type': 'application/json' // 默認值},data: {// 請求的數據},success: function(res) {console.log('請求成功', res.data);},fail: function(err) {console.error('請求失敗', err);}
});
  • url: 開發者服務器接口地址。
  • data: 請求的參數。對于GET方法,會轉換成query string;對于POST方法且header[‘content-type’]為application/json的數據,會進行JSON序列化。
  • header: 設置請求頭信息,例如設置Content-Type來指定請求體格式。
  • method: 支持包括GET、POST在內的常見HTTP方法。不同平臺對某些方法的支持可能有所不同,請參照官方文檔。
  • timeout: 超時時間,單位ms。H5端需要HBuilderX 2.9.9+版本支持。
  • success: 請求成功的回調函數,包含返回的數據、狀態碼及響應頭等信息。
  • fail: 請求失敗的回調函數,提供錯誤代碼、消息等信息。

2. 文件上傳:使用 uni.uploadFile

當需要上傳文件時,可以使用 uni.uploadFile 方法。它可以用來上傳圖片、音頻等多媒體文件。

uni.uploadFile({url: '上傳URL',filePath: '要上傳的文件路徑',name: '上傳文件對應的key',formData: {'user': 'test'},success: function(res) {console.log('上傳成功', res.data);}
});

3. 文件下載:使用 uni.downloadFile

對于需要從服務器下載文件的情況,可以使用 uni.downloadFile 方法。

uni.downloadFile({url: '下載URL',success: function(res) {if (res.statusCode === 200) {console.log('下載成功');}}
});

4. 封裝網絡請求

為了簡化代碼和提高復用性,通常會對網絡請求進行封裝。例如,可以創建一個 request.js 文件來統一管理所有的網絡請求邏輯。

export const request = (options) => {return new Promise((resolve, reject) => {uni.request({...options,success: resolve,fail: reject});});
};

然后,在頁面中可以通過這種方式調用:

import { request } from '@/utils/request.js';async function fetchData() {try {const response = await request({url: '/api/data',method: 'GET'});console.log(response);} catch (error) {console.error(error);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74128.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74128.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74128.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python3使用lxml解析xml時踩坑記錄

文章目錄 你的 XML 數據解析 XML----------------------------1. 獲取 mlt 根元素的屬性--------------------------------------------------------2. 獲取 chain 元素的屬性--------------------------------------------------------3. 獲取所有 property 的值-------------…

【DeepSeek 學c++】dynamic_cast 原理

用于向下轉化。 父類引用指向指類對象 假設父親是a, 子類是b. B* pb new B; 子類對象 A* pa 父類引用指向子類對象&#xff0c; 那么向上轉化 Apa pb 這個是自動完成的&#xff0c;隱式轉化&#xff0c;不需要dynamic_cast 向下轉化指的是 A pa new B。 這個是指向子類對象…

c++ 數組索引越界檢查

用 c 編寫了一些程序&#xff0c;發現 c 不會自動檢查數組的索引越界問題。有時候程序運行錯誤&#xff0c;提示的錯誤信息莫名其妙&#xff0c;但很可能是某個數組越界的問題。 例如&#xff1a; #include <iostream>int main() {double arr[5] {1.1, 2.2, 3.3, 4.4,…

Touch Diver:Weart為XR和機器人遙操作專屬設計的觸覺反饋動捕手套

在虛擬現實&#xff08;VR&#xff09;和擴展現實&#xff08;XR&#xff09;領域&#xff0c;觸覺反饋技術正逐漸成為提升沉浸感和交互體驗的重要因素。Weart作為這一領域的創新者&#xff0c;憑借其TouchDIVER Pro和TouchDIVER G1觸覺手套&#xff0c;為用戶帶來了高度逼真的…

基于deepseek的智能語音客服【第二講】后端異步接口調用封裝

本篇內容主要講前端請求&#xff08;不包含&#xff09;訪問后端服務接口&#xff0c;接口通過檢索知識庫&#xff0c;封裝提示詞&#xff0c;調用deepseek的&#xff0c;并返回給前端的全過程&#xff0c;非完整代碼&#xff0c;不可直接運行。 1.基于servlet封裝異步請求 為…

歸并排序的思路與實現

歸并排序主要是兩大模塊 分治 和 合并 即將已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每個子序列有序&#xff0c;再使子序列段間有序。若將兩個有序表合并成一個有序表&#xff0c;稱為二路歸并 由于使用了新的數組 那么空間復雜度就為O(n) 但這…

Word中公式自動標號帶章節編號

&#xff08;1&#xff09;插入一行三列的表格&#xff0c;設置寬度分別為0.5&#xff0c;13.39和1.5&#xff0c;設置縱向居中&#xff0c;中間列居中對齊&#xff0c;最右側列靠右對齊&#xff0c;設置段落如下 &#xff08;2&#xff09;插入域代碼 【Word】利用域代碼快速實…

阿里云服務器環境部署 四 MySQL主從配置

安裝MySQL 導入mysql鏡像 docker load -i /opt/dockerinstall/mysql/mysql-8.1.0.tar docker run --privilegedtrue --name mysql8 --restartunless-stopped -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/d…

[RH342]iscsi配置與排錯

[RH342]iscsi配置與排錯 1. 服務端配置1.1 安裝targetcli1.2 準備磁盤1.3 服務端配置1.4 防火墻配置 2. 客戶端配置2.1 安裝客戶端軟件2.2 配置客戶端2.3 連接登錄服務端2.4 掛載使用 3. 安全驗證擴展3.1 服務端3.2 客戶端 4. 常見的排錯點4.1 服務端常見錯誤4.2 客戶端常見錯誤…

服裝零售行業數字化時代的業務與IT轉型規劃P111(111頁PPT)(文末有下載方式)

服裝零售行業數字化時代的業務與IT轉型規劃P111 詳細資料請看本解讀文章的最后內容。 隨著數字化技術的迅猛發展&#xff0c;服裝零售行業正經歷著前所未有的變革。本文將對《服裝零售行業數字化時代的業務與IT轉型規劃P111》進行詳細解讀&#xff0c;探討未來幾年內該行業的…

基于javaweb的SSM+Maven寵物領養寵物商城流浪動物管理系統與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

PostgreSQL 數據庫中導入大量數據

在 PostgreSQL 數據庫中導入大量數據,可根據數據來源和格式選擇不同的方法。以下為你詳細介紹幾種常見的方式: 1. 使用 COPY 命令(適用于本地數據文件) COPY 命令是 PostgreSQL 內置的高效數據導入工具,適合處理本地的數據文件。 步驟 準備數據文件 確保你的數據文件格…

C++語法之命名空間二

A.h頭文件中代碼&#xff1a; namespace a {void 輸出(); }; A.cpp源文件中代碼&#xff1a; #include <iostream> #include "A.h" void a::輸出() {std::cout << "A.h里的輸出函數" << std::endl; } B.h頭文件中代碼&#xff1a; …

基于FPGA的DDS連續FFT 仿真驗證

基于FPGA的 DDS連續FFT 仿真驗證 1 摘要 本文聚焦 AMD LogiCORE IP Fast Fourier Transform (FFT) 核心,深入剖析其在 FPGA 設計中的應用。該 FFT 核心基于 Cooley - Tukey 算法,具備豐富特性,如支持多種數據精度、算術類型及靈活的運行時配置。文中詳細介紹了其架構選項、…

美團Leaf分布式ID生成器使用教程:號段模式與Snowflake模式詳解

引言 在分布式系統中&#xff0c;生成全局唯一ID是核心需求之一。美團開源的Leaf提供了兩種分布式ID生成方案&#xff1a;號段模式&#xff08;高可用、依賴數據庫&#xff09;和Snowflake模式&#xff08;高性能、去中心化&#xff09;。本文將手把手教你如何配置和使用這兩種…

Swift 并發任務的協作式取消

在 Swift 并發&#xff08;Swift Concurrency&#xff09;中&#xff0c;任務&#xff08;Task&#xff09;不會被強行終止&#xff0c;而是采用**協作式取消&#xff08;cooperative cancellation&#xff09;**機制。這意味著任務會被標記為“已取消”&#xff0c;但是否真正…

大數據(1.1)紐約出租車大數據分析實戰:從Hadoop到Azkaban的全鏈路解析與優化

目錄 一、背景與數據價值? ?二、技術選型與組件分工? ?三、數據準備與預處理? 四、實戰步驟詳解? ?1. 數據上傳至HDFS ?2. Hive數據建模與清洗? 4?.2.1 建表語句&#xff08;分區表按年份&#xff09;?&#xff1a; ?4?.2.2 數據清洗&#xff08;剔除無效…

代碼隨想錄刷題day50|(回溯算法篇)131.分割回文串▲

目錄 一、回溯算法基礎知識 二、分割回文串思路 2.1 如何切割 2.2 判斷回文 2.3 回溯三部曲 2.4 其他問題 三、相關算法題目 四、總結 一、回溯算法基礎知識 詳見&#xff1a;代碼隨想錄刷題day46|&#xff08;回溯算法篇&#xff09;77.組合-CSDN博客 二、分割回文…

VS Code PowerShell、Windows PowerShell、CMD 的區別與聯系

VS Code PowerShell、Windows PowerShell、CMD 的區別與聯系? VS Code PowerShell、Windows PowerShell、CMD 的區別與聯系&#xff1a; 一、核心概念對比 名稱 全稱 類型 定位 VS Code PowerShell Visual Studio Code PowerShell 代碼編輯器集成終端 開發/腳本編寫…

關于Unity的CanvasRenderer報錯

MissingReferenceException: The object of type ‘CanvasRenderer’ has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.UI.GraphicRaycaster.Raycast (UnityEng…