状态管理(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)
}
目录
打赏
0
0
0
0
15
分享
相关文章
除了 Vuex,还有以下一些常见的状态管理库
【10月更文挑战第18天】随着技术的不断发展和演进,新的状态管理库也可能不断涌现,我们需要保持关注和学习,以适应不断变化的开发需求。
92 1
使用 Redux 进行状态管理
【10月更文挑战第26天】从定义 Action 和 Reducer,到创建 Store,再到将 Redux 与 React 组件进行连接,以及处理异步操作,Redux 提供了一种清晰、可预测的方式来管理应用程序的状态,使得应用的状态变化更加易于理解和维护,尤其适用于大型复杂的应用开发。在实际使用过程中,还可以根据项目的具体需求,进一步优化 Redux 的使用,如使用 `redux-immutable` 来处理不可变数据、使用 `redux-devtools` 进行调试等,以提高开发效率和应用性能。
67 9
Vuex 状态管理
【10月更文挑战第15天】总的来说,Vuex 是 Vue.js 应用中非常重要的状态管理工具,它可以帮助我们更好地管理应用的状态,提高开发效率和代码质量。通过深入了解和正确使用 Vuex,我们可以构建出更加复杂和高效的 Vue.js 应用。
【第36期】一文学会Redux状态管理
【第36期】一文学会Redux状态管理
129 0
Vue3状态管理新选择:Pinia安装与使用详解,以及与Vuex的对比分析
Vue3状态管理新选择:Pinia安装与使用详解,以及与Vuex的对比分析
217 0
全面解析 Pinia:Vue 状态管理的新选择
本文深入探讨了 Pinia,作为 Vuex 的替代品,提供了一种更简洁和高效的状态管理方案。文章涵盖了 Pinia 的核心特性,包括支持 Vue2 和 Vue3、TypeScript 支持、无需嵌套模块的设计,以及对同步和异步操作的支持。详细介绍了如何创建和使用 Store,管理状态、Getters 和 Actions,重置状态以及通过 $patch 方法批量更新状态。最后,探讨了如何在不同 Store 之间共享数据和逻辑,为开发者提供了实用的 Pinia 使用指南。
68 0
Vuex是如何帮助我们管理状态的
Vuex通过一系列核心概念和规则,帮助我们有效地管理和维护Vue.js应用程序中的状态。
40 4
Vue是如何管理它的组件状态的
【8月更文挑战第5天】Vue是如何管理它的组件状态的
53 2
一起学习Vuex 4.0的状态管理(Vite)
一起学习Vuex 4.0的状态管理(Vite)
109 0
如何使用 Vuex 管理应用的状态?
如何使用 Vuex 管理应用的状态?
41 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等