当前位置: 首页 > news >正文

8_vuex全局状态管理

一、vuex状态管理模式库

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

二、安装npm i vuex -S

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

this.$store选项式api

useStore()组合式api

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MFC Windows 程序设计[293]之多分屏窗口(附源码)
  • 【JavaScript】JS实用案例分享:DOM节点转JSON数据 | 标签输入框
  • SQL之聚集函数和数据分组
  • C语言进阶——文件操作
  • 【C++笔试强训】第三天
  • 【JDBC】入门增删改查
  • 螺旋探索与自适应混合变异的麻雀搜索-附代码
  • 精品基于PHP实现的好物优购商城|电商小程序
  • 求解大规模优化问题的改进正弦余弦算法
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • [系统安全] 逆向工程进阶篇之对抗逆向分析
  • 二十三、Hive本地模式安装
  • Spring Cloud Alibaba — 0、服务架构演变
  • 实战 - AES对称加密算法加密和解密设备联动码
  • IDEA统计项目代码量
  • JS 中的深拷贝与浅拷贝
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【comparator, comparable】小总结
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 2017年终总结、随想
  • CentOS 7 修改主机名
  • CSS相对定位
  • ES6 ...操作符
  • ES6系统学习----从Apollo Client看解构赋值
  • go append函数以及写入
  • java8-模拟hadoop
  • Material Design
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • 编写符合Python风格的对象
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 前嗅ForeSpider采集配置界面介绍
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 译有关态射的一切
  • 用Visual Studio开发以太坊智能合约
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • (+4)2.2UML建模图
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2)MFC+openGL单文档框架glFrame
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计高校学生选课系统
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)终结任务
  • (算法)硬币问题
  • (一)Thymeleaf用法——Thymeleaf简介
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .net 生成二级域名