国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【uniapp】小程序開(kāi)發(fā):2 安裝uni-ui組件庫(kù)、使用pinia狀態(tài)管理、自定義http請(qǐng)求

這篇具有很好參考價(jià)值的文章主要介紹了【uniapp】小程序開(kāi)發(fā):2 安裝uni-ui組件庫(kù)、使用pinia狀態(tài)管理、自定義http請(qǐng)求。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、安裝uni-ui組件庫(kù)

1、安裝

pnpm i -D sass
pnpm i @dcloudio/uni-ui

2、配置組件自動(dòng)導(dǎo)入
使用 npm 安裝好 uni-ui 之后,需要配置 easycom 規(guī)則,讓 npm 安裝的組件支持 easycom

打開(kāi)項(xiàng)目根目錄下的 pages.json 并添加 easycom 節(jié)點(diǎn):

// pages.json
{
	"easycom": {
		"autoscan": true,
		"custom": {
			// uni-ui 規(guī)則如下配置
			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
		}
	},
	
	// 其他內(nèi)容
	pages:[
		// ...
	]
}

3、安裝插件,實(shí)現(xiàn)uni-ui組件的類(lèi)型提示

pnpm i -D @uni-helper/uni-ui-types

安裝完成后,在 tsconfig.json 中增加配置項(xiàng)

{
  "compilerOptions": {
    "types": [
      // ... ///
      "@uni-helper/uni-ui-types"
    ]
  },
  // ...
}

4、測(cè)試使用

隨便復(fù)制一個(gè)組件在頁(yè)面上面就可以直接使用,比如

<uni-card title="基礎(chǔ)卡片" sub-title="副標(biāo)題" extra="額外信息" thumbnail="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png">
  <text>這是一個(gè)帶頭像和雙標(biāo)題的基礎(chǔ)卡片,此示例展示了一個(gè)完整的卡片。</text>
</uni-card>

【uniapp】小程序開(kāi)發(fā):2 安裝uni-ui組件庫(kù)、使用pinia狀態(tài)管理、自定義http請(qǐng)求,前端,uni-app,小程序

二、使用pinia做持久化

1、安裝依賴(lài)包

pnpm install pinia
pnpm install pinia-plugin-persistedstate

如果啟動(dòng)時(shí)遇到錯(cuò)誤"hasInjectionContext" is not exported by

可以卸載pinia重新安裝指定指定版本

pnpm uninstall pinia
pnpm install pinia@2.0.36

2、編寫(xiě)持久化代碼

1)創(chuàng)建src/stores/index.ts,內(nèi)容如下:

import {createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'

const pinia = createPinia()
// 使用持久化存儲(chǔ)插件
pinia.use(persist)
// 默認(rèn)導(dǎo)出給main.ts使用
export default pinia
// 模塊統(tǒng)一導(dǎo)出
export * from './modules/member'

2)編號(hào)member模塊代碼member.ts

// 定義 store
import { defineStore } from "pinia"
import { ref } from "vue"

export const useMemberStore = defineStore('member', () => {

    // 會(huì)員信息
    const profile = ref()
    // 保存會(huì)員信息
    const setProfile = (val: any) => {
        profile.value = val
    }

    // 清理會(huì)員信息
    const clearProfile = () => {
        profile.value = undefined
    }

    return {
        profile,
        setProfile,
        clearProfile,
    }
},
{   // 網(wǎng)頁(yè)端寫(xiě)法
    // persist:true,
    // 小程序端寫(xiě)法
    persist: {
        storage: {
            getItem(key) {
                return uni.getStorageSync(key)
            },
            setItem(key, value) {
                uni.setStorageSync(key, value)
            }
        }
    }
}
)

3)在main.ts是引入

import { createSSRApp } from "vue";
import App from "./App.vue";
// 導(dǎo)入 pinia 實(shí)例
import pinia from "./stores";

export function createApp() {
  const app = createSSRApp(App);
  // 使用pinia
  app.use(pinia)
  return {
    app,
  };
}

3、在組件頁(yè)面中使用

<template>
  <view class="content">
    <view>會(huì)員信息:{{ memberStore.profile }}</view>
    <button  plain size="mini" type="primary"
      @click="memberStore.setProfile({
        nickname:'我是管理員',
      })"
    >保存用戶(hù)信息</button>
    <button  plain size="mini" type="warn"
      @click="memberStore.clearProfile()"
    >清空用戶(hù)信息</button>
  </view>
</template>

<script setup lang="ts">
import { useMemberStore } from '@/stores';
const memberStore = useMemberStore()
</script>

<style>
.content {
  margin: 10px;
}
</style>

【uniapp】小程序開(kāi)發(fā):2 安裝uni-ui組件庫(kù)、使用pinia狀態(tài)管理、自定義http請(qǐng)求,前端,uni-app,小程序

三、攔截http請(qǐng)求,處理請(qǐng)求參數(shù),請(qǐng)求結(jié)果

1、增加請(qǐng)求攔截器,增加請(qǐng)求基礎(chǔ)地址、增加自定義請(qǐng)求頭、請(qǐng)求token、設(shè)置請(qǐng)求超時(shí);
2、自定義http請(qǐng)求方法,處理請(qǐng)求響應(yīng)結(jié)果數(shù)據(jù),根據(jù)不同的返回代碼處理響應(yīng)結(jié)果

import { useMemberStore } from "@/stores";

const baseUrl = "http://127.0.0.1:8080"

const httpInterceptor = {
    // 攔截前觸發(fā)
    invoke(options: UniApp.RequestOptions) {
        // 1. 增加基礎(chǔ)地址
        if (!options.url.startsWith('http')) {
            options.url = baseUrl + options.url
        }
        // 2. 修改超時(shí)時(shí)間,默認(rèn) 60s
        options.timeout = 30000
        // 3. 添加請(qǐng)求頭
        options.header = {
            ...options.header,
            'source': 'mimiapp'
        }
        // 4. 添加token
        const memberStore = useMemberStore()
        const token = memberStore.profile?.token
        if (token) {
            options.header.Authorization = token
        }
        console.log(options);
    }
}
uni.addInterceptor('request', httpInterceptor)
uni.addInterceptor('uploadFile', httpInterceptor)
interface Resp<T> {
    code: string,
    message: string,
    result: T
}
/**
 * 請(qǐng)求函數(shù)
 */
export const http = <T>(options: UniApp.RequestOptions) => {
    // 1. 返回Promise對(duì)象
    return new Promise<Resp<T>>((resolve, reject) => {
        uni.request({
            ...options,
            //2. 響應(yīng)成功
            success(res) {
                if (res.statusCode == 200 && res.statusCode < 300) {
                    resolve(res.data as Resp<T>)
                } else if (res.statusCode == 401) {
                    // 401錯(cuò)誤 沒(méi)有權(quán)限,跳轉(zhuǎn)到登錄頁(yè)面
                    const memberStore = useMemberStore()
                    memberStore.clearProfile()
                    uni.navigateTo({ url: '/pages/login/login' })
                    reject(res)
                } else {
                    // 其他錯(cuò)誤 根據(jù)錯(cuò)誤信息提示
                    uni.showToast({
                        title: (res.data as Resp<T>).message || '請(qǐng)求錯(cuò)誤',
                        icon: 'none',
                        mask: true
                    })
                    reject(res)
                }
            },
            // 響應(yīng)失敗
            fail(res) {
                uni.showToast({
                    title: res.errMsg,
                    icon: 'none',
                    mask: true
                })
                reject(res)
            },
        })
    })
}

在頁(yè)面中使用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-709569.html

import {http} from '@/utils/http'
const getData =async ()=>{
 const res = await http<string[]>({
    url:'/api/user/login',
    method:'POST',
    data: {
      "loginName": "user",
      "password": "123"
    }
  })
  console.log(res);
}

到了這里,關(guān)于【uniapp】小程序開(kāi)發(fā):2 安裝uni-ui組件庫(kù)、使用pinia狀態(tài)管理、自定義http請(qǐng)求的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【uniapp】在微信小程序中修改uni-ui組件樣式不生效的解決方案

    【uniapp】在微信小程序中修改uni-ui組件樣式不生效的解決方案

    在使用uniapp框架開(kāi)發(fā)微信小程序時(shí),使用到了uni-ui的uni-table組件。由于需要修改表頭的背景色,于是乎在微信開(kāi)發(fā)工具中使用調(diào)試工具審查元素獲取其class名: 嘗試直接在頁(yè)面中修改樣式: 結(jié)果無(wú)效。于是嘗試使用深度選擇器 依然無(wú)效。然后查詢(xún)微信平臺(tái)官方開(kāi)發(fā)文檔得知

    2024年02月02日
    瀏覽(101)
  • uniapp+vue3+vite+ts搭建項(xiàng)目引入uni-ui和uviewPlus組件庫(kù)

    一、創(chuàng)建項(xiàng)目架構(gòu) 首先使用官方提供的腳手架創(chuàng)建一個(gè)項(xiàng)目 在這里插入代碼片 ,這里我創(chuàng)建的 vue3 + vite + ts 的項(xiàng)目: (如命令行創(chuàng)建失敗,請(qǐng)直接訪問(wèn) gitee下載模板) 二、下載依賴(lài) 啟動(dòng) 三、下載安裝包 引入uni-ui src/package.json 文件配置easycom模式 引入uview-plus main.ts配置 u

    2024年02月13日
    瀏覽(17)
  • 使用uni-ui 實(shí)現(xiàn)下拉搜索框(uniapp+uni-ui+vue3 開(kāi)發(fā)微信小程序)

    需求:輸入框中輸入內(nèi)容--遠(yuǎn)端搜索匹配的選項(xiàng)--展示選項(xiàng)(可點(diǎn)擊選擇選項(xiàng)) 代碼實(shí)現(xiàn) htm:(一個(gè)輸入框input + list) js: css

    2024年01月24日
    瀏覽(20)
  • uni-app自定義組件及拓展(uni-ui)組件的使用

    uni-app自定義組件及拓展(uni-ui)組件的使用

    UniApp 是一個(gè)基于 Vue.js 的跨平臺(tái)應(yīng)用框架,可以用來(lái)開(kāi)發(fā)同時(shí)運(yùn)行在多個(gè)平臺(tái)(如微信小程序、支付寶小程序、App等)的應(yīng)用程序。在 UniApp 中,組件的使用與 Vue.js 中的組件使用基本類(lèi)似,但需要考慮跨平臺(tái)兼容性。 1. 創(chuàng)建組件文件 在 UniApp 項(xiàng)目中創(chuàng)建一個(gè)新的組件,通常

    2024年04月29日
    瀏覽(117)
  • uni-app擴(kuò)展組件(uni-ui)

    uni-app擴(kuò)展組件(uni-ui)

    目錄 數(shù)字角標(biāo)(uni-badge) 代碼示例: 面包屑(uni-breadcrumb) 代碼示例: 日歷 代碼示例 卡片(uni-card) 代碼示例 倒計(jì)時(shí)(uni-countdown) 更多內(nèi)容請(qǐng)?jiān)L問(wèn)官網(wǎng) 數(shù)字角標(biāo)一般和其它控件(列表、9宮格等)配合使用,用于進(jìn)行數(shù)量提示,默認(rèn)為實(shí)心灰色背景。 使用方式是在HBuilder中創(chuàng)建項(xiàng)目

    2024年02月15日
    瀏覽(21)
  • uni-ui簡(jiǎn)單入門(mén)教程 - 如何用HBuilderX為uni-app項(xiàng)目啟用uni-ui擴(kuò)展組件?

    uni-ui簡(jiǎn)單入門(mén)教程 - 如何用HBuilderX為uni-app項(xiàng)目啟用uni-ui擴(kuò)展組件?

    uni-app是一個(gè)前端框架 簡(jiǎn)單來(lái)說(shuō),uni-app的組件,類(lèi)似HTML的標(biāo)簽,例如a轉(zhuǎn)navigation、span轉(zhuǎn)text等 uni-app的組件包括 基礎(chǔ)組件 ?(自帶免安裝) + 擴(kuò)展組件 (可選裝, 官方出品uni-ui 或者第三方) uni-app出品的uni-ui官方手冊(cè)很 坑爹 ,組件代碼是一個(gè)文檔,效果展示是另一個(gè)文檔! 【u

    2023年04月08日
    瀏覽(165)
  • uni-ui組件庫(kù)uni-icons不顯示

    uni-ui組件庫(kù)uni-icons不顯示

    按照官方文檔用yarn引用了uni-ui組件庫(kù)并且在pages.json和vue.config.js中配置了相關(guān)的內(nèi)容后使用uni-icon效果如下: ? 使用uni-icons的地方圖標(biāo)都未顯示成功 1-按照 項(xiàng)目名稱(chēng)node_modules@dcloudiouni-uilibuni-icons目錄找到uni-icons目錄 2-將uni-icons目錄放到src目錄下的components目錄下 3-在pages

    2024年02月15日
    瀏覽(92)
  • uni-ui安裝

    在HBuilderX 新建uni-app項(xiàng)目的模板中,選擇uni-ui模板即可使用 安裝后node_modules文件夾內(nèi)增加dcloudio文件夾 官方文檔 注意 cli 項(xiàng)目默認(rèn)是不編譯 node_modules 下的組件的,導(dǎo)致條件編譯等功能失效 ,導(dǎo)致組件異常 需要在根目錄創(chuàng)建 vue.config.js 文件 ,增加 @dcloudio/uni-ui 包的編譯即可

    2024年02月16日
    瀏覽(20)
  • uniapp collapse動(dòng)態(tài)生成多個(gè)折疊面板手動(dòng)展開(kāi)收起(包括uni-ui版)

    uniapp collapse動(dòng)態(tài)生成多個(gè)折疊面板手動(dòng)展開(kāi)收起(包括uni-ui版)

    官方文檔沒(méi)有暴露出相關(guān)api,那就看看組件源碼。 以下示例均通過(guò)? vue-cli ?創(chuàng)建的? uni-app ?h5 項(xiàng)目 源碼 node_modulesuview-uicomponentsu-collapse-itemu-collapse-item.vue 這個(gè)方法是用來(lái)改變折疊面板子組件收起還是展開(kāi)的,根據(jù)改變 isShow 的值來(lái)實(shí)現(xiàn) 方法 源碼 node_modules@dcloudiouni-ui

    2024年02月06日
    瀏覽(38)
  • uni-ui 中 uni-file-picker組件限制用戶(hù)上傳大小超過(guò)大小自動(dòng)去除

    uni-ui 中 uni-file-picker組件限制用戶(hù)上傳大小超過(guò)大小自動(dòng)去除

    uni-ui 中 uni-file-picker組件限制用戶(hù)上傳大小超過(guò)大小自動(dòng)去除 找到該組件位置打開(kāi)uni-file-picker 在props中添加自己想起的名字綁定限制大小 找到chooseFileCallback方法插入代碼: 其他頁(yè)面調(diào)用即可

    2024年01月15日
    瀏覽(139)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包