Vue3中使用Pinia存储数据并发送请求

一、安装pinia

npm i pinia

二、创建src/store/index.ts

// 仓库
import {createPinia} from 'pinia'
// 创建仓库
let pinia = createPinia()
export default pinia;

三、入口文件中注册使用

// 引入pinia
import pinia from './store'
app.use(pinia)

四、创建src/store/modules/type/type.ts

// 登录接口data类型定义
export interface loginDataTs {
    username:string,
    password:string
}
// 登录接口返回数据的类型定义
export interface loginResponseDataTs {
    code:number,
    msg:string,
    token:string,
    userInfo:any
}

五、创建src/store/modules/user.ts模块化pinia

// 创建用户相关的小仓库
import { defineStore } from 'pinia'
// 引入接口
import { LoginApi,getUserInfoApi ,logoutApi} from '@/api/users/index.ts'
// 引入数据类型
import { loginDataTs ,loginResponseDataTs } from '@/api/users/type'
import type { UserStateTs } from '@/store/modules/types/type'
// 创建小仓库
let useUserStore = defineStore('User', {
    // 存储数据的地方
    state: ():UserStateTs => {
        return {
            token: localStorage.getItem('token'),//用户唯一标识
            userInfo:''
        }
    },
    // 异步逻辑的地方
    actions: {
        // 登录请求
        async userLogin(data: loginDataTs) {
            let res:loginResponseDataTs = await LoginApi(data)
            // 登录成功:200->token
            // 登录失败:->登录失败错误信息
            if (res.code == 200) {
                // 存入state
                this.token = (res.token as string)
                // 持久化存储token
                let token:string = JSON.stringify(res.token)
                localStorage.setItem('token',(token as string))
                return Promise.resolve(res.msg)
            }else{
                return Promise.reject(res.msg)
            }
        }
    },
    getters: {

    }
})

export default useUserStore

六、组件中使用

// 引入相关的小仓库
import useUserStore from '@/store/modules/user.ts';
// 使用pinia仓库
let useStore = useUserStore()
// 登录按钮事件
const loginBtn = async () => {
        // 向pinia里面触发函数发起登录请求
        await useStore.userLogin(loginForm)
    }
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Vue 3 可以使用 PWA 相关库 Pinia 来管理状态。 首先,需要在 Vue 3 安装 Pinia: ``` npm install @vueuse/pinia ``` 然后,在项目使用 Pinia,可以在 main.js 进行配置: ``` import { createApp } from 'vue' import App from './App.vue' import { createPinia } from '@vueuse/pinia' const pinia = createPinia() const app = createApp(App) app.use(pinia) app.mount('#app') ``` 在组件使用 Pinia,可以用 `setup()` 函数进行配置: ``` import { useStore } from '@vueuse/pinia' export default { setup() { const store = useStore('example') return { count: store.state.count, increment() { store.commit('increment') } } } } ``` 然后就可以在组件使用 `count` 和 `increment()` 了。 ### 回答2: Pinia 是 Vue 3 生态系统的状态管理库,它是一个为 Vue 3 设计的简单但功能强大的状态管理解决方案。使用 Pinia 可以更好地管理和组织 Vue 3 应用程序的状态。 在 Vue 3 使用 Pinia 非常简单。首先,我们需要安装 Pinia: npm install pinia 然后,在我们的应用程序的入口文件导入并创建一个 Pinia 实例: import { createPinia } from 'pinia' import { createApp } from 'vue' const pinia = createPinia() const app = createApp(App) app.use(pinia) app.mount('#app') 现在,我们可以在我们的组件使用状态管理了。我们可以使用 defineStore 函数来定义一个存储,该存储将包含我们的状态和一些操作。例如,我们可以定义一个名为 "counter" 的存储: import { defineStore } from 'pinia' export const useCounterStore = defineStore('counter', { state: () => ({ count: 0 }), actions: { increment() { this.count++ }, decrement() { this.count-- } } }) 然后,在我们的组件使用存储: <template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> <button @click="decrement">Decrement</button> </div> </template> <script> import { useCounterStore } from './store' export default { setup() { const counter = useCounterStore() return { count: counter.count, increment: counter.increment, decrement: counter.decrement } } } </script> 现在,我们可以在组件使用 count 变量来访问存储的计数,并通过点击按钮来增加或减少计数。 总结起来,Vue 3 使用 Pinia 只需几步即可轻松实现状态管理。首先,我们需要安装 Pinia 并在入口文件创建 Pinia 实例。然后,我们使用 defineStore 函数定义我们的存储,并在组件使用存储。这使得我们可以使用存储的状态和操作来管理和共享应用程序的状态。 ### 回答3: Vue 3是一种用于构建用户界面的现代JavaScript框架,而Pinia是使用Vue 3生态系统的新状态管理库。 Vue 3使用Pinia主要可以提供更好的状态管理和数据流解决方案。 Pinia的主要特点之一是它是基于Vue 3的新响应式系统创建的。与传统的Vue 2响应式系统相比,它具有更高的性能和更好的内存管理。此外,Pinia还提供了更好的组织代码的结构,使项目更加可维护和可扩展。 在Vue 3使用Pinia的第一步是安装Pinia插件。可以通过使用npm或yarn命令来安装它。安装完成后,需要在应用程序的入口文件注册Pinia插件。 接下来,可以在Vue组件使用Pinia状态。首先,需要导入createPinia函数并使用它创建一个Pinia实例。然后,可以使用该实例的`useStore`函数来创建和使用Pinia存储。 Pinia存储是一个类,它通过定义状态和方法来跟踪和管理应用程序的数据。可以在存储定义一些公共状态、计算属性和方法。存储类可以在Vue组件实例化,并通过Vue组件的provide/inject机制进行共享。 另外,在Vue 3,可以使用defineProps和defineEmits函数来定义组件的输入和输出。这些函数使得组件的属性和事件变得类型安全和更易于维护。 总之,Vue 3和Pinia之间的结合为Vue开发者提供了更好的状态管理和数据流解决方案。通过使用Pinia,可以更好地组织代码并提高应用程序的性能和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忧郁火龙果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值