Taro 網絡 API 詳解與實用案例

Taro 網絡 API 詳解與實用案例

在現代前端開發中,網絡通信是不可或缺的一環。Taro 作為一款多端開發框架,提供了豐富且統一的網絡 API,幫助開發者在小程序、H5、React Native 等多端環境下高效地進行數據交互。本文將詳細介紹 Taro 的四大網絡 API:Taro.requestTaro.uploadFileTaro.downloadFileTaro.connectSocket,并結合實際案例,助你快速掌握其用法。


1. Taro.request(options):發起網絡請求

功能說明

Taro.request 是 Taro 提供的通用網絡請求方法,支持 GET、POST、PUT、DELETE 等 HTTP 請求方式。它的用法與微信小程序的 wx.request 類似,但可跨端使用。

常用參數

  • url:請求地址(必填)
  • method:請求方法(默認 GET)
  • data:請求參數
  • header:請求頭
  • timeout:超時時間(單位 ms)
  • success / fail / complete:回調函數(推薦使用 Promise)

案例

import Taro from '@tarojs/taro'
import { Button, View, Text } from '@tarojs/components'
import { useState } from 'react'export default function RequestDemo() {const [result, setResult] = useState('')const handleRequest = () => {Taro.request({url: 'https://jsonplaceholder.typicode.com/posts/1',method: 'GET'}).then(res => {setResult(JSON.stringify(res.data, null, 2))Taro.showToast({ title: '請求成功', icon: 'success' })}).catch(() => {Taro.showToast({ title: '請求失敗', icon: 'none' })})}return (<View><Button onClick={handleRequest}>發起 GET 請求</Button><Text selectable>{result}</Text></View>)
}

2. Taro.uploadFile(options):上傳文件

功能說明

Taro.uploadFile 用于將本地資源(如圖片、視頻等)上傳到服務器。常用于用戶頭像上傳、圖片發布等場景。

常用參數

  • url:上傳接口地址(必填)
  • filePath:要上傳的文件路徑(必填)
  • name:文件對應的 key,后端通過這個字段獲取文件內容(必填)
  • formData:額外的表單數據
  • header:請求頭

案例

import Taro from '@tarojs/taro'
import { Button, View, Text } from '@tarojs/components'
import { useState } from 'react'export default function UploadDemo() {const [uploadRes, setUploadRes] = useState('')const handleUpload = () => {Taro.chooseImage({count: 1,success: function (chooseRes) {const tempFilePath = chooseRes.tempFilePaths[0]Taro.uploadFile({url: 'https://httpbin.org/post', // 示例接口filePath: tempFilePath,name: 'file',formData: { user: 'test' },success: function (res) {setUploadRes(res.data)Taro.showToast({ title: '上傳成功', icon: 'success' })},fail: function () {Taro.showToast({ title: '上傳失敗', icon: 'none' })}})}})}return (<View><Button onClick={handleUpload}>選擇圖片并上傳</Button><Text selectable>{uploadRes}</Text></View>)
}

3. Taro.downloadFile(options):下載文件

功能說明

Taro.downloadFile 用于從服務器下載文件到本地。常用于下載圖片、文檔、音視頻等資源。

常用參數

  • url:文件下載地址(必填)
  • header:請求頭
  • success / fail / complete:回調函數

案例

import Taro from '@tarojs/taro'
import { Button, View, Text, Image } from '@tarojs/components'
import { useState } from 'react'export default function DownloadDemo() {const [filePath, setFilePath] = useState('')const handleDownload = () => {Taro.downloadFile({url: 'https://img.shields.io/badge/Taro-多端開發-blue.svg',success: function (res) {if (res.statusCode === 200) {setFilePath(res.tempFilePath)Taro.showToast({ title: '下載成功', icon: 'success' })}},fail: function () {Taro.showToast({ title: '下載失敗', icon: 'none' })}})}return (<View><Button onClick={handleDownload}>下載圖片</Button>{filePath && <Image src={filePath} style={{ width: '200px', height: '60px' }} />}</View>)
}

4. Taro.connectSocket(options):創建 WebSocket 連接

功能說明

Taro.connectSocket 用于創建 WebSocket 連接,實現客戶端與服務器的實時通信。適用于聊天、實時數據推送等場景。

常用參數

  • url:WebSocket 服務端地址(必填)
  • header:請求頭
  • protocols:子協議數組
  • success / fail / complete:回調函數

案例

import Taro from '@tarojs/taro'
import { Button, View, Text, Input } from '@tarojs/components'
import { useState, useRef } from 'react'export default function WebSocketDemo() {const [msg, setMsg] = useState('')const [log, setLog] = useState([])const socketTaskRef = useRef(null)const connect = () => {const socketTask = Taro.connectSocket({url: 'wss://echo.websocket.org', // 測試 WebSocket 服務success: () => {setLog(l => [...l, 'WebSocket 連接成功'])}})socketTask.onMessage(res => {setLog(l => [...l, '收到消息: ' + res.data])})socketTask.onOpen(() => {setLog(l => [...l, 'WebSocket 已打開'])})socketTask.onClose(() => {setLog(l => [...l, 'WebSocket 已關閉'])})socketTaskRef.current = socketTask}const sendMsg = () => {if (socketTaskRef.current) {socketTaskRef.current.send({ data: msg })setLog(l => [...l, '發送消息: ' + msg])setMsg('')}}const close = () => {if (socketTaskRef.current) {socketTaskRef.current.close()}}return (<View><Button onClick={connect}>連接 WebSocket</Button><Input value={msg} onInput={e => setMsg(e.detail.value)} placeholder="輸入消息" /><Button onClick={sendMsg}>發送消息</Button><Button onClick={close}>關閉連接</Button><View>{log.map((item, idx) => <Text key={idx}>{item}{'\n'}</Text>)}</View></View>)
}

推薦閱讀:

  • Taro 官方文檔 - 網絡 API

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

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

相關文章

Bitbucket平臺的HTTP Access Tokens操作手冊

在Bitbucket平臺添加HTTP Access Tokens&#xff08;用于替代密碼進行認證&#xff09;。 1. 登錄Bitbucket并訪問個人設置 打開 Bitbucket 并登錄賬號。點擊右上角頭像 → 選擇 Manage account。 2. 生成Access Token 在左側菜單中選擇 Access tokens&#xff08;位于 Sec…

低成本、高泛化能力的無人機自主飛行!VLM-Nav:基于單目視覺與視覺語言模型的無地圖無人機導航

作者&#xff1a;Gobinda Chandra Sarker1^{1}1, AKM Azad2^{2}2, Sejuti Rahman1^{1}1, Md Mehedi Hasan1^{1}1單位&#xff1a;1^{1}1達卡大學&#xff0c;2^{2}2伊瑪目穆罕默德伊本沙特伊斯蘭大學論文標題&#xff1a;VLM-Nav: Mapless UAV-Navigation Using Monocular Visi…

Docker Desktop 安裝到D盤(包括wsl)

默認WSL虛擬機位置&#xff1a; C:\Users\<用戶名>\AppData\Local\Docker\wsl重裝DockerDesktop下載安裝包Docker Desktop Installer.exe在D盤創建文件夾D:\Program Files\DockerDesktopD:\Program Files\DockerDesktop\data 在cmd運行 start /w "" "Dock…

網絡協議(三)網絡層 IPv4、CIDR(使用子網掩碼進行網絡劃分)、NAT在私網劃分中的應用

利用子網掩碼進行子網劃分 這是一個模擬搭建的私網&#xff0c;有倆臺主機ab。現在主機a要給云端服務器發送一條消息&#xff0c;這條消息怎么才能到達云端服務器呢&#xff1f;確定這條數據中的源端為本地ip的9000端口&#xff0c;目的端為24.24.24.8888端口&#xff0c;首先&…

8.4 Java 原生 TCP Socket 實現 HTTP 請求解析和請求分發

使用 Java 原生 TCP Socket 實現 HTTP 請求解析和請求分發&#xff0c;是一個理解 HTTP 協議底層原理的好方法。雖然 Java 提供了 HttpServer 類來簡化 HTTP 服務器開發&#xff0c;但如果你想從 TCP 層 開始構建一個簡單的 HTTP 服務器&#xff0c;可以使用 ServerSocket 和 S…

自研能管項目開發界面

自研能管軟件實現一個界面開發 目的&#xff1a; ? 通過接口方式實現展示哪些數據例如&#xff1a; ? 已知制絲車間下的計量電表&#xff0c;在可視化界面通過點擊制絲車間的方式&#xff0c;自動在MySQL存儲制絲車間的電表數據(假設是每分鐘存儲一次)&#xff0c;前端即可以…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 基于wordcloud庫實現詞云圖

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解基于wordcloud庫實現詞云圖 視頻在線地址&…

Vue3 面試題及詳細答案120道(31-45 )

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

Proxmox VE 8.3/8.4開啟Intel 核顯的vGPU,搭建vGPU云桌面系統

1. Intel Graphics SR-IOV 介紹Intel Graphics SR-IOV 是 Intel 最新的圖形虛擬化技術。單根 I/O 虛擬化 &#xff08;SR-IOV&#xff09; 通過將設備劃分為多個虛擬功能來定義共享物理設備功能的標準方法。每個虛擬函數都直接分配給一個虛擬機&#xff0c;從而為虛擬機實現接近…

LeetCode 熱題100

文章目錄哈希兩數之和字母異位詞分組最長連續序列雙指針移動零盛最多水的容器滑動窗口子串多刷題 LeetCode 熱題100 哈希 兩數之和 思路分析&#xff1a; 暴力做法&#xff1a;每一個數字都與剩余的數字作比較&#xff0c;時間復雜度是O(n2)O(n^2)O(n2)哈希做法&#xff1a;我…

Idea或Pycharm上.idea的忽略提交的問題總結

文章目錄問題描述如果是首次提交或者之后的提交代碼時把.idea及其文件提交到遠端倉庫中&#xff0c;此時再創建.gitignore會不生效。問題描述 由于在代碼托管平臺上創建的項目&#xff0c;沒有關聯創建.gitignore文件。導致git 克隆到本地電腦上時&#xff0c;項目的根目錄下也…

【鎖】MySQL中有哪幾種鎖?

&#x1f4da; 歡迎來到我的Java八股文專欄&#xff01; &#x1f389; 各位程序員小伙伴們好呀~ &#x1f44b; 我是雪碧聊技術&#xff0c;很高興能在CSDN與大家相遇&#xff01;? &#x1f680; 專欄介紹 這個專欄將專注于分享Java面試中的經典"八股文"知識點 &a…

曠視科技視覺算法面試30問全景精解

曠視科技視覺算法面試30問全景精解 ——AI賦能 智能安防 視覺創新&#xff1a;曠視科技視覺算法面試核心考點全覽 前言 曠視科技&#xff08;Megvii&#xff09;作為全球領先的人工智能公司&#xff0c;專注于計算機視覺、深度學習和智能安防等領域&#xff0c;推動人臉識別、…

docker nginx 部署前端踩坑記錄

文章目錄坑點1&#xff1a;localhost 與127.0.0.1坑點1&#xff1a;localhost 與127.0.0.1 server {listen 80 default_server;client_max_body_size 20M;# 記錄訪問日志和錯誤日志access_log /var/log/nginx/host.access.log main;error_log /var/log/nginx/error.l…

JAVA_TEN-面向對象高級一

一.Static一 定義&#xff1a;叫靜態&#xff0c;可以修飾成員變量、成員方法成員變量按有無static修飾&#xff0c;分為兩種&#xff1a;類變量&#xff1a;有static 修飾&#xff0c;屬于類&#xff0c;在計算機里只有一份&#xff0c;會被類的全部對象共享。實例變量&#x…

幻獸帕魯開服教程

以下均為個人推薦&#xff0c;不喜勿噴&#xff0c;望審核大大明辨開服條件一臺帶公網的vps服務器&#xff08;需開放udp&#xff09;&#xff0c;配置至少為4c16g&#xff0c;推薦8c32g開服需要準備的工具&#xff1a;steamcmd&#xff1a;https://steamcdn-a.akamaihd.net/cl…

lesson21:Python面向對象編程

目錄 引言 一、了解面向對象編程&#xff08;OOP&#xff09;&#xff1a;編程范式的革命 1.1 什么是面向對象編程&#xff1f; 1.2 OOP vs 面向過程&#xff1a;思維方式的差異 1.3 OOP的三大核心特性 二、類與對象&#xff1a;OOP的基石 2.1 類&#xff08;Class&#…

基于卷積神經網絡與小波變換的醫學圖像超分辨率算法復現

基于卷積神經網絡與小波變換的醫學圖像超分辨率算法復現 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 引言 醫學圖像超分辨率技術在臨床診斷和治療規劃…

HCIP第一二章筆記整理

第一章&#xff1a;復習HCIA第一階段應用層&#xff1a;自然語言轉換為編碼表示層&#xff1a;編碼轉換為二進制介質訪問控制層&#xff1a;二進制轉化為信號物理層&#xff1a;傳輸電信號第二階段&#xff1a;OSI參考模型應用層&#xff1a;提供網絡服務表示層&#xff1a;對數…

《使用Qt Quick從零構建AI螺絲瑕疵檢測系統》——2. C++基礎:構建程序的堅實骨架

目錄一、概述1.1 背景介紹&#xff1a;從UI到邏輯1.2 學習模式&#xff1a;Qt控制臺應用二、C語法快速入門2.1 變量、數據類型與注釋2.2 函數與代碼封裝2.3 循環與容器&#xff1a;批量處理三、面向對象編程&#xff1a;封裝數據與行為四、Qt的核心擴展&#xff1a;信號與槽通信…