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

vue 后台管理 之 状态管理 vuex 的使用

幸福是一种能力

文章目录

  • 一、数据驱动视图
  • 二、VueX 数据公共池


一、数据驱动视图

  • 我们都知道 vue 之所以好用,是因为官方帮我们做了数据驱动视图
  • 初始化时将数据和视图进行绑定,通过 watcher 来监听数据的变化,当数据变化时,会触发响应的更新函数,从而更新视图

在这里插入图片描述

但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

  • 多个视图依赖于同一状态。
  • 来自不同视图的行为需要变更同一状态

二、VueX 数据公共池

  • 我很喜欢用一个词来形容 vuex ,‘数据公共池’,非常生动形象,简易来说就是 “ 共享 ”

1. 安装

npm install vuex@next --save

2. 定义

import { createStore } from 'vuex'  // 引入vuex库// 创建一个新的 store 实例
const store = createStore({state() {return {}},mutations: {},actions:{}
})export default store// main.js 里引入挂载
import store from './store'  // 记得修改路径 
const app = createApp(App)
app.use(store)

3. 使用

  • 这是一个简易版的 js 文件
  • Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
import { createStore } from 'vuex'
import { getinfo } from '~/api/manager'
const store = createStore({state() {return {// 用于存储用户信息user: {},}},// 不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) // mutation 这样使得我们可以方便地跟踪每一个状态的变化,// 从而让我们能够实现一些工具帮助我们更好地了解我们的应用。mutations: {// 记录用户信息SET_USERINFO(state,user){state.user = user},},actions:{// 获取当前登录用户信息getinfo({ commit }){return new Promise((resolve,reject)=>{getinfo().then(res=>{// 通过使用 commit 方法调用修改user  commit("SET_USERINFO",res)resolve(res)}).catch(err=>reject(err))})},}
})export default store
  • 现在,你可以通过 store.state 来获取状态对象,并通过 store.commit 方法触发状态变更
    $store.commit('increment')console.log($store.state.count)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • React之简易笔记本
  • k8s部署kubeadm init初始化不成功,coredns处于pending,master和nodes处于notready状态
  • MySQL 查询分组内最新的第一条数据
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • go语言源码解读之数据结构堆
  • Redis远程字典服务器(5) —— list类型详解
  • Cocos Creator倒计时
  • jenkins升级踩坑记录
  • service 管理 web 管理插件
  • 电子音乐制作软件有哪些 电音制作用什么软件 好用的能够创作音乐的软件推荐 电音基础新手入门
  • OpenCV--图像梯度处理,图片轮廓,边缘检测
  • 打印一个字符串全部子序列(没有重复字面值)
  • 刷题记录第108天-求一个数的平方根(精确到小数点后五位)
  • 使用 C/C++访问 MySQL
  • repo简介
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Elasticsearch 参考指南(升级前重新索引)
  • jquery cookie
  • js算法-归并排序(merge_sort)
  • leetcode386. Lexicographical Numbers
  • mongodb--安装和初步使用教程
  • 技术胖1-4季视频复习— (看视频笔记)
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端之Sass/Scss实战笔记
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 异常机制详解
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​Spring Boot 分片上传文件
  • #if和#ifdef区别
  • #QT(一种朴素的计算器实现方法)
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (06)Hive——正则表达式
  • (20)docke容器
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (PySpark)RDD实验实战——求商品销量排行
  • (二)c52学习之旅-简单了解单片机
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (六)Flink 窗口计算
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (算法)前K大的和
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (译)2019年前端性能优化清单 — 下篇
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 中插件式开发实现
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET NPOI导出Excel详解
  • .net打印*三角形