vue3使用pinia中的actions,需要调用接口的话

news/2025/1/19 22:02:33/文章来源:https://www.cnblogs.com/htmlww/p/18680371

1. Pinia简介

Pinia是Vue 3推荐的状态管理库,类似于Vuex,但其设计更简单和灵活。使用Pinia的actions来调用接口可以更清晰地管理异步操作和状态变化。

2. 安装和配置Pinia

首先,需要安装Pinia:

npm install pinia
​
 
 

在项目的入口文件(通常是 main.js或 main.ts)中配置Pinia:

import { createApp } from 'vue';
import { createPinia } from 'pinia';
import App from './App.vue';const app = createApp(App);
const pinia = createPinia();app.use(pinia);
app.mount('#app');
​
 
 

3. 创建Store

创建一个Pinia Store,并在actions中调用接口。

创建 store.js或 store.ts

假设我们有一个API接口用于获取用户数据:

import { defineStore } from 'pinia';
import axios from 'axios';export const useUserStore = defineStore('user', {state: () => ({user: null,loading: false,error: null,}),actions: {async fetchUser(userId) {this.loading = true;this.error = null;try {const response = await axios.get(`/api/users/${userId}`);this.user = response.data;} catch (error) {this.error = error;} finally {this.loading = false;}},},
});
​
 
 

4. 使用Store

在Vue组件中使用这个Store:

<template><div><button @click="loadUser">Load User</button><div v-if="loading">Loading...</div><div v-if="error">Error: {{ error.message }}</div><div v-if="user"><h1>{{ user.name }}</h1><p>{{ user.email }}</p></div></div>
</template><script setup>
import { ref } from 'vue';
import { useUserStore } from './store';const userStore = useUserStore();const loadUser = async () => {await userStore.fetchUser(1);
};const { user, loading, error } = userStore;
</script>
​
 
 

5. 详细说明

在上面的代码中,我们通过以下步骤实现了接口调用和状态管理:

  1. 安装和配置Pinia:在项目中引入并配置Pinia。
  2. 创建Store:定义了一个 useUserStore的Store,包含了状态 userloading和 error,以及一个异步的action fetchUser来调用API接口。
  3. 使用Store:在Vue组件中,通过调用 fetchUser action来获取用户数据,并将状态 userloading和 error绑定到模板中。

分析说明表

步骤 描述
安装和配置Pinia 在项目中安装Pinia,并在入口文件中配置和使用
创建Store 使用 defineStore定义状态和actions,使用 axios进行API调用
使用Store 在Vue组件中调用Store的actions,并绑定状态到模板

思维导图

Vue 3 使用 Pinia 调用接口

安装和配置 Pinia

创建 Store

使用 Store

定义状态

定义 actions

使用 axios 进行 API 调用

在组件中调用 actions

绑定状态到模板

结论

通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871879.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K-D树及其应用

K-D树及其应用 简介 在单个维度的范围搜索场景下,如:搜索创建时间最靠近某个日期的商品信息。可以通过遍历所有的商品信息,计算每个商品的创建日期的差值,得到差值最小的商品即可,这样每次查询的时间复杂度为 \(O(n)\);或者通过构造一个 BST,通过日期进行比较查询,这样…

基础动态规划讲解

(标题就叫这个吧,我也没什么主意了) 动态规划,要给这个这个东西下个定义,确实不太好下,他是一种基于状态来思考问题的算法思想 用来表示状态的话,那就是dp,(这么说好抽象),就直接说涉及动态规划的题目怎么处理吧 ,这个还是有步骤可行的,就按如下步骤操作 1.寻找子…

遗传算法个人入门笔记

先举一个简单的求解例子: 变量x,y 函数f(x,y) = (x-5)^2 + (y+3)^2 - 5 求最小值。 def test(x,y):return (x - 5)**2 + (y - 3)**2 - 5显然,这个函数在x=5,y=3时取最小值-5。现在我们尝试用遗传算法解决之。 遗传算法主要是模拟生物进化的过程,将每一个值视作一个生物,有…

excel快速定位到某一行

左上角输入框输入:A100定位到第100行

2024秋季学期 电子技术基础期末复习笔记

这期末也太难了吧,15*2,俩超级难的电路,直接给我算麻了电路分析模拟电路

【牛客训练记录】牛客周赛 Round 77

训练情况赛后反思 打一半吃饭去了,C题看到 ax+by=k 的问题,简单的扩欧exgcd没反应过来,简单数论还是不熟悉TAT,D题DSU计算联通块大小时 \(i\) 打成 \(a_i\) 疯狂 RE 被硬控了十几分钟 A题 输出题目所述的第几个字符串即可 #include <bits/stdc++.h> // #define int l…

LIS于LCS

LIS与LCS是动态规划中最常见的两种情况,LIS也就是最长上升子序列,而LCS是最长公共子序列。 在解决这个问题之前,先要明白为什么是序列,举个例子来说明,在数组 [1,2,3,4,5,6]中,[2,3,5]就是其子序列,也就是说,子序列其实就是数组中存在先后顺序,但不强调连续的子数组。…

层次分析法:数学建模

今天学习了层次分析法和数学建模,这里就简单写一下自己的学习新的,参考的资料是B站上的免费网课,老师讲的不错,可以去围观,学习,希望可以拿个奖。https://www.bilibili.com/video/BV1p14y1U7Nr/?spm_id_from=333.337.search-card.all.click 上面这里是链接。本文的大部分…

那些年我在 HL 集训做的题【某人别催了!】

某人别催了!!!Day 0 1.16 下午到 HL,居然还写了一道题? P8855 [POI2002] 商务旅行 LCA 板子。不理解当时为啥要写这个东东,可能是为了热热身吧。 Day 1 讲整体二分,但是没听懂。貌似是魔改版 CDQ...不管它。但是我似乎发现了一片新天地,一切的一切都从下面的一道题说起…

Mac 刷题环境配置

方便Mac 刷题,记录一些环境配置Mac 刷题环境配置 这篇博文主要记录自己为了更方便的在 Mac 上写算法题,主要是基于 Clion做的一些环境配置;有些操作其实在 Windows ,Linux 下也是通用的,如果看到的小伙伴也可以结合自己的情况参考。 Clion 插件 推荐一下这个插件 C/C++ Si…

excel对列数据去重(数据核对)

第一步,选中A列数据,单击功能区——数据选项卡——高级第二步,在弹出的对话框中,选中“将筛选结果复制到其他位置”,"列表区域"填写A列的地址:$A$1:$A$17,“复制到”填写:B1,把“选择不重复记录”勾上,确定即可。结果如下图

前端开发day1

day1 目的:开发一个平台(网站)- 前端开发:HTML、CSS、JavaScript- Web框架:接收请求并处理- MySQL数据库:存储数据地方快速上手:基于Flask Web框架让你快速搭建一个网站出来。深入学习:基于Django框架(主要)1,快速开发网站 pip install flaskfrom flask import Flask…