状态管理(pinia)

简介: 状态管理(pinia)

优势

1. 兼容性,vue2vue3都可以使用

2. 抛弃了 Mutations 的操作,只有 state 、 getters 和 actions. 极大的简化了状态管理库的使用,让代码编写

更加容易直观。

3. 可以直接修改 state

4. 扁平化、独立化,每个仓库独立

安装配置

1. 安装 npm i pinia

2. main.js 中创建 pinia 实例并安装

1. import { createApp } from 'vue'
import App from './App.vue'
// 导入pinia
import { createPinia } from 'pinia';
// vue实例
const app = createApp(App)
// 在vue实例上安装pinia
app.use(createPinia())
app.mount('#app')

3. 新建 store 文件夹,在其中新建 js 文件

import { defineStore } from 'pinia';
// 创建仓库
// 变量名必须use开头,defineStore第一参数是仓库id,第二个是配置
const useUser = defineStore('user', {
state() {
return {
// 数据
}
},
getters: {
},
actions: {
}
})
export default useUser;

使用

state

state 中添加数据

state() {
return {
// 数据
count: 0
}
},
2.

在需要的页面中引入 useUser 使用

import useUser from '../store/user.js';
const user = useUser()
console.log(user.count);

getters

getters 中添加函数

getters: {
getCount() {
return this.count * 10;
}
},

在需要的页面中引入 useUser 使用

import useUser from '../store/user.js';
const user = useUser()
console.log(user.getCount);

修改

直接修改

直接在页面中修改 state 即可

import useUser from '../store/user.js';
const user = useUser()
console.log(user);
let change = () => {
// 直接修改
user.count++
}

$patch 同时修改多个

比一个一个修改性能好

import useUser from '../store/user.js';
let user = useUser()
const change = () => {
// 同时修改多个
user.$patch({
count: user.count + 1,
msg: 'hello pinia!'
})
}

$patch 修改数组或对象

这种方法适合复杂数据的修改,比如数组、对象的修改 , 因为它们的修改非常困难或代价高昂

import useUser from '../store/user.js';
let user = useUser()
const change = () => {
user.$patch((state) => {
// 修改数组、对象
state.userItems.push({ name: 'shoes', quantity: 1 })
state.userInfo.name = '李四'
})
}

$state

state 替换成新的对象

import useUser from '../store/user.js';
let user = useUser()
const change = () => {
user.$state = {
count : 1,
name : '张三'
}
}

actions

1. actions 中新建方法

actions: {
changeCount(data) {
// 通过this取值改值,所以不要使用箭头函数
this.count++
}
}

2. 在需要的地方调用

import useUser from '../store/user.js';
let user = useUser()
const change = () => {
user.changeCount(123)
}
相关文章
|
6月前
|
存储 资源调度 JavaScript
在Vue 3项目中引入Pinia进行状态管理并持久化存储
在Vue 3项目中引入Pinia进行状态管理并持久化存储
125 0
|
7月前
|
JavaScript API
Vuex状态管理最佳实践
使用Vuex进行状态管理时,有一些最佳实践可以帮助你保持代码清晰、可维护和高效。以下是一些详细的Vuex状态管理最佳实践
100 3
|
JavaScript API
浅尝Vue最新状态管理工具Pinia(实战使用Pinia管理登录状态)
pinia是vue新的状态管理工具,也称作vuex5,本文讲解Pinia的使用方法
796 0
浅尝Vue最新状态管理工具Pinia(实战使用Pinia管理登录状态)
|
6天前
|
存储 JavaScript 前端开发
【第36期】一文学会Redux状态管理
【第36期】一文学会Redux状态管理
70 0
|
6天前
|
JavaScript 测试技术
状态管理:集成 Vuex 进行全局状态管理
【4月更文挑战第22天】Vuex 是 Vue.js 的状态管理库,通过状态、mutations、actions 和 modules 等核心概念集中管理应用状态。创建 store,划分模块以增强代码维护性。mutations 同步改变状态,actions 处理异步逻辑。遵循 Vuex 规范,在组件中使用辅助函数访问状态。有效更新和处理错误,实现与其它工具集成,提升应用性能和可靠性。注意根据项目需求灵活使用,防止状态管理过度复杂。
|
6天前
|
存储 JavaScript 前端开发
一起学习Vuex 4.0的状态管理(Vite)
一起学习Vuex 4.0的状态管理(Vite)
32 0
|
6天前
|
资源调度 JavaScript
如何使用 Vuex 管理应用的状态?
如何使用 Vuex 管理应用的状态?
18 3
|
6天前
|
存储 JavaScript 前端开发
探索 Pinia:简化 Vue 状态管理的新选择(上)
探索 Pinia:简化 Vue 状态管理的新选择(上)
探索 Pinia:简化 Vue 状态管理的新选择(上)
|
6天前
|
存储 JavaScript API
探索 Pinia:简化 Vue 状态管理的新选择(下)
探索 Pinia:简化 Vue 状态管理的新选择(下)
探索 Pinia:简化 Vue 状态管理的新选择(下)
|
6天前
|
存储 JavaScript 前端开发
Vue状态管理:Vue中的状态管理是什么?为什么使用状态管理?
Vue状态管理:Vue中的状态管理是什么?为什么使用状态管理?
125 2