首页 > 其他分享 >vue3使用pinia中的actions,需要调用接口的话

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

时间:2025-01-19 22:15:13浏览次数:1  
标签:调用 pinia error actions user Pinia vue3 Store

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,都能轻松实现高效的状态管理和数据处理。

标签:调用,pinia,error,actions,user,Pinia,vue3,Store
From: https://www.cnblogs.com/htmlww/p/18680371

相关文章

  • Vue3初学之路由
    在Vue3中,路由管理是构建单页面应用(SPA)的关键部分。VueRouter4是Vue3的官方路由管理器,提供了与Vue3的深度集成和一系列新特性。安装VueRouter4npminstallvue-router@4配置路由在项目的src目录下创建一个router文件夹,并在其中创建一个index.js文件......
  • Vue3 自定义Hooks完全指南
    目录1.前言2.什么是Hooks2.1Hooks的定义2.2为什么需要Hooks2.3与Vue2的区别3.Hooks的实现原理3.1响应式系统3.2生命周期集成3.3依赖注入系统4.Hooks的作用与应用场景4.1常见应用场景4.2实际案例分析5.Hooks的优缺点5.1优点5.2缺点6.Hooks的书写规范6......
  • Vue3+TS笔记
    创建工程:npminitvue@latestVue3工程结构在main.js中:引入的vue更轻量,引入vue是一个更精简版的名为createApp的工厂函数import{createApp}from'vue'importAppfrom'./App.vue'createApp(App).mount('#app')vm实例对象上有一个mount方法,不是原型上的$mou......
  • vue3产品实现tinymce编辑器word图片粘贴上传
    要求:开源,免费,技术支持编辑器:TinyMCE需求:复制粘贴word内容图片,图文混排,图片转存前端:vue,vue2-cli,vue3-cli后端:java,jsp,springboot,asp.net,php,asp,.netcore,.netmvc,.netform平台:Windows,macOS,Linux,RedHat,CentOS,Ubuntu,中标麒麟,银河麒麟,统信UOS,信创国产......
  • Cesium+Vue3教程(004):基于Vue3的Cesium添加地形和自定义地形
    文章目录03-添加地形与自定义地形添加地形添加水纹和光照效果加载自定义地形03-添加地形与自定义地形添加地形实现代码:constviewer=newCesium.Viewer("cesiumContainer",{terrainProvider:Cesium.createWorldTerrain(......
  • Vue3中使用组合式API通过路由传值详解
    在Vue3中,使用组合式API来传递路由参数是一种常见的需求。VueRouter是Vue.js的官方路由管理工具,可以在不同的场景下通过多种方式传递和接收路由参数。下面将详细讲解几种常见的路由传值方式,并提供相应的代码示例。1.通过路由参数传值(动态路由参数)路由参数是一种最常......
  • Vue3初学之Element-plus Form表单
    1.使用el-form组件el-form是一个表单容器,可以包含多个el-form-item,每个el-form-item包裹具体的表单控件,如输入框、选择器、日期选择器等。<template><el-form:model="form"label-width="120px"><el-form-itemlabel="用户名"><el-inputv-mod......
  • 关于vue3 路由离开前 更新pinia 导致页面watch被触发 解决方法
    背景:在vue中,使用watch监听pinia中的数据是否变化来调用apiwatch(()=>{return[pinia.data,]},(newV,oldV)=>{axios.get('a.b',params).then((response)=>{........});},{immediate:true})在监听piniadata的时候,如......
  • webpack5 从零搭建 vue3 项目
    目前vue3官网推荐的工具链已经是vite了,就算是要使用webpack甚至是webpack5,也可以直接使用vue-cli。然而之所以写这个,可以当是webpack5的一个学习文章。同时也是因为之前有个项目是在vue3刚出来的时候使用vue-cli(那是官网还是推荐使用webpack,以及但是得版本为webp......
  • Vue3在线聊天室
    更多开源项目请关注我的gitee:乌鸦像写字台(关注公众号:寻川的AI工具库免费得毕设必备软件以及详细项目运行文档)(he-haoran-hhh)-Gitee.com在Layout.vue中添加菜单选项<el-menu-itemindex="/home">首页</el-menu-item><el-menu-itemindex="/im">天农聊天室</el-menu-item......