vue3 pinia的安装和使用

4 篇文章 0 订阅
1 篇文章 0 订阅

Pinia最初是在 2019 年 11 月左右重新设计使用Composition API的 Vue Store 外观的实验。从那时起,最初的原则仍然相同,但 Pinia 适用于 Vue 2 和 Vue 3 ,并且不需要你使用组合 API。Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态

Pinia 是一个用于 Vue 的状态管理库,类似 Vuex, 是 Vue 的另一种状态管理方案,Pinia 2 是对应 Vue3 的版本

// 安装

npm i -S pinia

还需再安装个数据持久化插件

npm i -S pinia-plugin-persist 

 

使用

1、在src下创建store文件夹,并在其内创建index.js文件,文件内容如下

import { createPinia } from "pinia"
import piniaPluginPersist from "pinia-plugin-persist"

const store = createPinia()
store.use(piniaPluginPersist)

export default store

接着在main.js中引入

import store from "./store";

const app = createApp(App);

app.use(store)

2、在store目录下创建一个新的js文件,比如info.js,写入以下内容(建议通过 actions 去修改 state,action 里可以直接通过 this 访问

import { defineStore } from "pinia"

export const userStore = defineStore({
    id: "info", // id是唯一的,如果有多个文件,ID不能重复
    state: () => {
        return {
            userinfo: null,
            bank_type: 1, 
        }
    },
    actions: {
        setInfo(data) {
            this.userinfo = data
        },
        setBankType(data) {
            this.bank_type = data
        },
        // 用户退出,清除本地数据
        logout() {
            this.userinfo = null
            sessionStorage.clear()
            localStorage.clear()
        },
    },
    // 开启数据缓存,在 strategies 里自定义 key 值,并将存放位置由 sessionStorage 改为 localStorage
    // 默认所有 state 都会进行缓存,你可以通过 paths 指定要持久化的字段,其他的则不会进行持久化,如:paths: ['userinfo'] 替换key的位置
    persist: {
        enabled: true,
        strategies: [
            {
                key: "users",
                storage: localStorage,
            },
        ],
    },
})

3、页面使用

<script setup>
import { getCurrentInstance, ref } from "vue"
import { userStore } from "@store/info" // 引用js,路径根据你们对应配置好的路径填写
const store = userStore()

function getinfo() {
    proxy.$axios
        .get("", {})
        .then((res) => {
            if (res.data.code == 0) {
                let result = res.data.data

                // 调用info.js的actions中的setInfo方法
                // 跟vuex有所差别,vuex是store.commit 或 store.dispatch,pinia是省去了“.commit/.dispatch”步骤

                store.setInfo(result) 
            } else {
                Toast(res.data.msg)
            }
        })
        .catch((err) => {})
}

</script>

4、只要触发了actions中的方法就会按照上述配置好的persist缓存

自己记录一下

参考资料:新一代状态管理工具,Pinia.js 上手指南-技术圈

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
通过在package.json文件中查看,我们可以确认pinia的安装情况和版本。 使用npm install命令安装pinia,例如npm install pinia --save。安装完成后,可以在package.json文件中查看到已安装的pinia版本。请确保在Pinia中启用了pinia-plugin-persist插件,该插件可以在pinia中启用数据持久化功能。 如果你正在使用vue3 ts vuerouter pinia elementplus ts环境模板搭建及vite打包优化,可以参考相关文档或教程来进行vue3pinia的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3的pinia(大菠萝)](https://blog.csdn.net/longyan_tianyu/article/details/129450618)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue3+ts+vuerouter+pinia+elementplus+ts环境模板搭建及vite打包优化](https://download.csdn.net/download/qq_42717015/87775817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Vue3推荐的替代Vuex的新一代状态管理工具:Pinia 配置教程](https://blog.csdn.net/xjtarzan/article/details/123665620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

余温无痕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值