状态管理(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)
}
相关文章
|
25天前
|
存储 JavaScript 前端开发
除了 Vuex,还有以下一些常见的状态管理库
【10月更文挑战第18天】随着技术的不断发展和演进,新的状态管理库也可能不断涌现,我们需要保持关注和学习,以适应不断变化的开发需求。
37 1
|
6月前
|
存储
vuex5种状态?
vuex5种状态?
|
JavaScript API
浅尝Vue最新状态管理工具Pinia(实战使用Pinia管理登录状态)
pinia是vue新的状态管理工具,也称作vuex5,本文讲解Pinia的使用方法
1008 0
浅尝Vue最新状态管理工具Pinia(实战使用Pinia管理登录状态)
|
27天前
|
存储 JavaScript
Vuex 状态管理
【10月更文挑战第15天】总的来说,Vuex 是 Vue.js 应用中非常重要的状态管理工具,它可以帮助我们更好地管理应用的状态,提高开发效率和代码质量。通过深入了解和正确使用 Vuex,我们可以构建出更加复杂和高效的 Vue.js 应用。
|
3月前
|
存储 JavaScript 开发者
Vuex是如何帮助我们管理状态的
Vuex通过一系列核心概念和规则,帮助我们有效地管理和维护Vue.js应用程序中的状态。
16 4
|
3月前
|
存储 缓存 JavaScript
Vue是如何管理它的组件状态的
【8月更文挑战第5天】Vue是如何管理它的组件状态的
30 2
|
6月前
|
存储 JavaScript 前端开发
vuex的5种状态
vuex的5种状态
29 0
|
6月前
|
存储 JavaScript 前端开发
一起学习Vuex 4.0的状态管理(Vite)
一起学习Vuex 4.0的状态管理(Vite)
94 0
|
6月前
|
资源调度 JavaScript
如何使用 Vuex 管理应用的状态?
如何使用 Vuex 管理应用的状态?
31 3