随笔 - 45,  文章 - 0,  评论 - 2,  阅读 - 9004

vuex

  • vuex 是一个专为 vue.js 应用程序开发的状态管理模式库
    • 状态: 响应式数据
  • 集中式存储管理应用的所有组件的状态
    • 存储在 store 中
  • 以相应的规则保证状态以一种可预测的方式发生变化
    • 不能直接修改store里面的数据,要使用预先定义的修改方式来修改

安装

npm install vue -S
npm install vuex -S
  • 修改vuex源码,复制了@vue/devtools-api文件夹到lib中
// 但是由于还没有学习构建工具,要修改源码vuex.esm-browser.js里面的导入
import { inject, reactive, watch } from './vue.esm-browser.js';
import { setupDevtoolsPlugin } from './devtools-api/lib/esm/index.js';

创建store

// 导入vue
import {createApp} from './lib/vue.esm-browser.js'
// 导入vuex
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:store的state选项返回的数据集合
      // payload:你传递给addTask的实参
      // mutations里面的函数的调用方式: store.commit('函数名',实参)
      state.tasks.push(payload)
    }
  }
})

const app = createApp();
app.use(store)
// 插件安装以后
// 使用store里面的state:  任意vue实例.$store.state.tasks
// 调用store里面的mutations: 任意vue实例.$store.commit('addTasks',{name:'小小',completed:false,id:new Date().getTime()})
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()
posted on   玉龙龙玉  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

欢迎这位怪蜀黍来到《vuex - 玉龙龙玉 - 博客园》
点击右上角即可分享
微信分享提示