Vue——Pinia数据持久化(四)

一、pinia:数据存储仓库

1、解决的问题

解决:在项目首页中如何获取项目的基本信息(选择的那个项目)
在这里插入图片描述

2、vuex和pinia的作用

Pinia是Vue 的存储库,它允许您跨组件/页面共享数据。

3、pinia和sessionStorage、localStorage区别

浏览器自带的数据存储方式和pinia
1、window.sessionStorage:会话级别的存储,窗口关闭会自动清除,只能存储字符串和数值
2、window.localStorage:持久化存储,除非主动清除,否则会永久保存到浏览器本地,只能存储字符串和数值
3、Pinia:数据存储在缓存(内存)中,优点读写更快,可以保存任意的js类型数据和对象

4、安装

在这里插入图片描述

5、main.js中注册Pinia

在这里插入图片描述

6、使用

a、在store中创建user.js文件,导入

import { defineStore } from ‘pinia’

1、定义一个store对象(定义一个存储数据的仓库)
userStore:第二个userStore是仓库名称
userStore:第一个userStore是变量
export const userStore = defineStore(‘userStore’,{

2、定义仓库中全局共享(跨模块、跨页面)的数据
在这里插入图片描述

state(){
        return{
            name:"kobe",
            age:20,
            // 保存全局的项目信息
            pro:{}
        }
    },

3、全局的计算属性:getters
在这里插入图片描述

getters:{
        desc(state){
            return "我的名字:"+state.name+',年龄'+state.age
        }
    },

4、定义全局的方法:actions
当多个组件中使用同一个方法,可以将该方法定义为pinia的全局方法,提高代码的重用性。
在这里插入图片描述

actions:{
        // 退出登录
        logout(){
            window.sessionStorage.removeItem('token')
            window.sessionStorage.removeItem('uname')
            router.push({name:"login"})

        },
        savePro(pro){
            this.pro=pro
        }
    },

7、组件中使用全局属性

mapState:映射Pinia中的全局数据

…mapState(userStore,[‘age’,‘name’,‘desc’]),
将pinia中定义的全局数据映射为当前组件的计算属性
从userStore对象中映射’age’,‘name’,'desc’参数
在这里插入图片描述

8、组件中使用全局方法

user.js
在这里插入图片描述
AllProject.vue文件中
导入映射方法的函数mapActions
import { mapActions } from ‘pinia’
import { userStore } from ‘…/store/user.js’
在这里插入图片描述
...mapActions(userStore,['logout','savePro']),:将全局仓库中定义的savePro、logout方法映射为当前组件的方法

在这里插入图片描述

9、当选择项目进入,展示该项目的信息

在这里插入图片描述

导入映射方法的函数mapActions
在这里插入图片描述

将全局定义的logout方法,映射为当前组件的logout方法
...mapActions(userStore,['logout','savePro']),
在这里插入图片描述
将项目信息保存到vue的全局数据存储仓库
在这里插入图片描述

10、修改Pinia中提供的数据

通过定义计算属性
在这里插入图片描述

二、获取项目的详细信息

1、先将项目的信息导入进来

在这里插入图片描述

2、定义接口:获取项目的详细信息

getProjectInfo(id){
	return http.get(`/projects/${id}`)
},

3、发送请求

created:生命周期钩子函数,最先开始执行的方法
在这里插入图片描述

4、页面上获取到了项目信息

在这里插入图片描述
在这里插入图片描述

5、解决数据持久化问题

安装插件:pinia-plugin-persist
注册
在这里插入图片描述
配置
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码敲到头发茂密

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

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

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

打赏作者

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

抵扣说明:

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

余额充值