当前位置: 首页 > news >正文

vue3 pina使用

<script setup>
import { storeToRefs } from "pinia";
import {useAboutCompositionApiImplementStore,useAboutOptionsApiImplementStore
} from "./stores/about.store";
// 组合式
const aboutCompositionApiStore = useAboutCompositionApiImplementStore();
// const {loading, aboutInfo} = storeToRefs(aboutCompositionApiStore);
// 选项式
const aboutOptionsApiStore = useAboutOptionsApiImplementStore();</script>
<template>
<div>{{aboutCompositionApiStore.aboutInfo.data}}<button @click="aboutCompositionApiStore.loadAboutInfo()"> {{ aboutCompositionApiStore.loading ? 'Loading...' : 'Load Data' }}</button><button @click="aboutCompositionApiStore.reset()">reset</button>
</div>
<div>{{aboutOptionsApiStore.aboutInfo.data}}<button @click="aboutOptionsApiStore.loadAboutInfo()"> {{ aboutOptionsApiStore.loading ? 'Loading...' : 'Load Data' }}</button><button @click="aboutOptionsApiStore.reset()">reset</button>
</div>
</template>
import {defineStore} from "pinia";
import {ref, reactive} from 'vue'
// 使用组合式API
export const useAboutCompositionApiImplementStore =defineStore('aboutCompositionApi', () => {const loading = ref(false);const aboutInfo = reactive({data: []});const loadAboutInfo = async () => {try {loading.value = true;aboutInfo.data = await new Promise(resolve => {setTimeout(() => {resolve([{ id: 1, name: 'John Doe', role: 'CEO' },{ id: 2, name: 'Jane Smith', role: 'CTO' },{ id: 3, name: 'Mike Johnson', role: 'Developer' }])}, 1000)})} catch(e) {} finally {loading.value = false}}const reset = () => {loading.value = falseaboutInfo.data = []}return {loading,aboutInfo,reset,loadAboutInfo,}
})// 使用选项式API
export const useAboutOptionsApiImplementStore =defineStore('aboutOptionsApi', {state: () => ({loading: false,aboutInfo: {data: []}}),actions: {async loadAboutInfo() {try {this.loading = true;this.aboutInfo.data = await new Promise(resolve => {setTimeout(() => {resolve([{ id: 1, name: 'John Doe', role: 'CEO' },{ id: 2, name: 'Jane Smith', role: 'CTO' },{ id: 3, name: 'Mike Johnson', role: 'Developer' }]);}, 1000);});} catch (e) {console.error('加载失败:', e);} finally {this.loading = false;}},reset() {this.loading = false;this.aboutInfo.data = [];}}
})

  

  

http://www.wuyegushi.com/news/687.html

相关文章:

  • CobaltStrike流量分析
  • 【Nordic随笔】nRF54L15的引脚说明
  • CNVD-2024-15077 AJ-Report 认证绕过与远程代码执行漏洞 (复现)
  • Atcoder Beginner Contest 416
  • NCS添加.c.h文件
  • 明月直入,无心可猜
  • realtek网卡r8168如何强制设置1000M
  • mobaXterm免费版保存密码查询
  • 公司类型英文缩写
  • CVE-2020-17526 Apache Airflow 身份验证绕过漏洞 (复现)
  • Pwn2Own柏林2025次日战报:单日狂揽43.5万美元奖金,20个零日漏洞曝光
  • Day27
  • 猫树
  • 大道至简读后感
  • 一些感覺比較好的題目
  • 7.17XYD模拟赛
  • 如何把整套网站的源代码弄下来.250408
  • 牛客 周赛101 20250726
  • 人生的意义,就是没有意义.250421
  • 牛客2025多校 R3
  • 数论基础H
  • 推理大模型 vs 普通大模型:核心差异与国产代表产品
  • 【动态规划】树上连通块计数
  • Windows自带神器Robocopy一键备份文件文件夹,断点续传+多线程效率翻倍!.250429
  • 7月27日
  • 第八周作业
  • ASP.NET Core MVC 文件上传、文件扩展验证注解实现、文件扩展验证
  • 政治学和行政学属于法学
  • 基于RK3399嵌入式Linux驱动开发课程
  • Java日志框架