vuex
- vuex 是一个专为 vue.js 应用程序开发的状态管理模式库
- 集中式存储管理应用的所有组件的状态
- 以相应的规则保证状态以一种可预测的方式发生变化
- 不能直接修改store里面的数据,要使用预先定义的修改方式来修改
安装
npm install vue -S
npm install vuex -S
- 修改vuex源码,复制了@vue/devtools-api文件夹到lib中
import { inject, reactive, watch } from './vue.esm-browser.js';
import { setupDevtoolsPlugin } from './devtools-api/lib/esm/index.js';
创建store
import {createApp} from './lib/vue.esm-browser.js'
import {createStore} from './lib/vuex.esm-browser.js'
const store = createStore({
state(){
return {
tasks:[
{name:'吃饭',completed:true,id:1},
{name:'睡觉',completed:false,id:2},
{name:'打小报告',completed:false,id:3},
{name:'写代码',completed:true,id:4},
]
}
},
mutations:{
addTasks(state,payload){
state.tasks.push(payload)
}
}
})
const app = createApp();
app.use(store)
app.mount('#app')
选项
- state: 函数,返回一个对象,定义组件共享的状态
- mutations: 对象,里面定义多个函数,里面的代码是同步的,里面的函数通过 store.commit(函数名,payload) 提交
- actions: 对象,里面定义多个函数,里面的代码一般是异步的,里面的函数通过 store.dispatch(函数名,payload) 调用
- getters: 对象,类似计算属性,里面定义多个函数,函数的返回值就是获取到的值,依赖state里面的数据
- modules: 对象,模块, 每个模块最好添加一个属性namespaced:true
- 1 使用模块中的state: store.state.模块名.变量名
- 2 使用模块中的getters: store.getters['模块名/变量名']
- 3 提交模块中的mutations: store.commit('模块名/函数名',payload)
- 4 调用模块中的actions: store.dispatch('模块名/函数名',payload)
使用store
- 选项式api: this.$store
- 组合式api: useStore()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构