首页 > 其他分享 >动力节点⑤章 vuex——vue视频笔记

动力节点⑤章 vuex——vue视频笔记

时间:2023-04-21 17:36:07浏览次数:43  
标签:vue vuex js mapState 组件 reverseName 节点 store

5 Vuex

5.1 vuex概述

  1. vuex是实现数据集中式状态管理的插件。数据由vuex统一管理。其它组件都去使用vuex中的数据。只要有其中一个组件去修改了这个共享的数据,其它组件会同步更新。一定要注意:全局事件总线和vuex插件的区别:
    1. 全局事件总线关注点:组件和组件之间数据如何传递,一个绑定$on,一个触发$emit。数据实际上还是在局部的组件当中,并没有真正的让数据共享。只是数据传来传去。

  1. vuex插件的关注点:共享数据本身就在vuex上。其中任何一个组件去操作这个数据,其它组件都会同步更新。是真正意义的数据共享。

  1. 使用vuex的场景是:
    1. 多个组件之间依赖于同一状态。来自不同组件的行为需要变更同一状态。

5.2 vuex环境搭建

  1. 安装vuex
    1. vue2安装vuex3版本
      1. npm i vuex@3
    2. vue3安装vuex4版本
      1. npm i vuex@4
  2. 创建目录和js文件(目录和文件名不是必须叫这个)
    1. 目录:vuex
    2. js文件:store.js
  3. 在store.js文件中创建核心store对象,并暴露

  1. 在main.js文件中关联store,这一步很重要,完成这一步之后,所有的vm和vc对象上会多一个$store属性

5.3 vuex实现一个最简单的案例

  1. 使用vuex实现一个点我加1的简单功能。

  1. 为什么这么折腾呢?
    1. 通过以上案例,可以看出数据num可以被多个组件共享。(vuex可以管理多个组件共享的数据)
    2. 通过$on和$emit这种全局事件总线不好吗?可以。但如果组件多的话,并且涉及到读和写的操作会导致混乱。
  2. actions中的回调函数,参数context
    1. 如果业务逻辑非常负责,需要多个actions中的方法联合起来才能完成,可以在回调函数中使用context继续调用dispatch方法触发下一个action方法的执行。

5.4 vuex工作原理

如果业务逻辑非常简单,也不需要发送AJAX请求的话,可以不调用dispatch方法,直接调用commit方法也是可以的。

5.5 多组件数据共享

实现以下案例:

5.6 getters配置项

  1. 如果想将state中的数据进行加工计算,并且这个计算逻辑复杂,而且要在多个位置使用,建议使用getters配置项。
  2. 怎么用?
    1. 类似于Vue当中的:data和computed的关系。

5.7 mapState和mapGetters的使用(优化计算属性)

  1. 组件中在使用state上的数据和getters上的数据时,都有固定的前缀:

{{**this.$store.state.**name}} {{**this.$store.getters.**reverseName}} 使用mapState和mapGetters进行名称映射,可以简化以上的写法。

  1. 使用mapState和mapGetters的前提是先引入
    1. import {mapState, mapGetters} from ‘vuex’
  2. mapState如何使用,在computed当中使用ES6的语法
    1. 第一种方式:对象形式
      1. ...mapState({name:’name’})
    2. 第二种方式:数组形式
      1. ...mapState([‘name’])
    3. 插值语法就可以修改为:{{name}}
  3. mapGetters如何使用,在computed当中使用ES6的语法
    1. 第一种方式:对象形式
      1. ...mapGetters({reverseName:’reverseName’})
    2. 第二种方式:数组形式
      1. ...mapGetters([‘reverseName’])
    3. 插值语法就可以修改为:{{reverseName}}

5.8 mapMutations和mapActions的使用(优化methods)

import {mapMutations, mapActions} from ‘vuex’ methods : { // 对象写法 ...mapActions({add:’plusOne’,reverseName:’reverseName’}) // 数组写法(前提是:保证methods中的方法名和actions中的方法名一致) ...mapActions([‘plusOne’, ‘reverseName’]) }

5.9 vuex的模块化开发

5.9.1 未使用mapXxxx的模块化开发

a模块 b模块 c模块 在store.js文件中引入各个模块 A组件 b组件 将A组件和B组件在App组件中注册

5.9.2 使用mapXxxx的模块化开发

a模块 b模块 在store.js中引入a和b模块 A组件 B组件 在APP组件中注册A和B组件 当然,在action中也可以发送AJAX请求:

标签:vue,vuex,js,mapState,组件,reverseName,节点,store
From: https://blog.51cto.com/u_16077885/6213845

相关文章

  • 使用PhantomJS解决VUE项目无法被百度收录
    一、安装PhantomJS安装文章:https://www.cnblogs.com/robots2/p/17340143.html二、编写脚本spider.js//spider.js'usestrict';console.log('=====start=====');//单个资源等待时间,避免资源加载后还需要加载其他资源varresourceWait=500;varresourceWaitTimer;/......
  • js递归查询id所对应的节点,查询该节点的父节点,查询该节点的所有子节点
    在工作项目中经常遇到树形结构的数据,而往往我们需要用递归来实现,下面就给大家列举常用的递归操作。   lettreeList=[{id:'1',name:'父一',children:[{id:'1-1',......
  • vue下拉框选择后不显示值,选其他下拉框后才显示出来
    vue下拉框选择后不显示值,选其他下拉框后才显示出来 vue也太坑了解决方法:为该el-select添加change事件中使用$set来对属性赋值,如下:changeData(val){ this.$set(this.formData,this.formData.id,val.value)}......
  • vue全家桶进阶之路50:Vue3 环境变量+跨域设置实例
    使用.env加后缀的方式来建立某个模式下的环境变量,例如:项目根目录新建两个环境变量文件(development开发环境和production生产环境):.env.development.env.production 在新建的两个环境变量文件中设置相同的环境变量名:VUE_APP_BASE_API环境变量名称必须以"VUE_API_"+名称......
  • vue-input-directive 插件的使用(已兼容vue3.0)
    codepen体验地址github地址安装、引入npminstallvue-input-directive--saveimportVuefrom'vue'importinputValidatefrom'vue-input-directive'Vue.use(inputValidate)1、d-input-max 输入数字限制最大值<el-inputv-d-input-max="99.99"v-......
  • k8s将pod指定到某个节点
    1、查看节点标签kubectlgetnodes--show-labels2、给节点打标签kubectllabelnode10.64.39.219node=bmdkubectllabelnode10.64.39.186node=bmd3、指定程序的运行pod[root@apiserverk8s]#catselec.ymlapiVersion:extensions/v1beta1kind:Deployment......
  • Vue3 代码块高亮显示并可使用富文本编辑器编辑(highlight.js + wangEditor)
    在Vue项目中实现以下功能:  功能1.在页面中显示代码,并将其中的关键字高亮显示。  功能2.允许对代码块进行编辑,编辑时代码关键字也高亮显示。  功能3.可在编辑器中添加多个代码块,动态渲染代码关键字高亮。 Step1:安装所需插件(本文使用npm安装,若需使用其他方式请查......
  • vue兼容IE的方法规范
    第三方插件的兼容性需经过ie和国产电脑浏览器测试后,才可以使用。1、main.js顶部添加babel-polyfillimport'babel-polyfill'importVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'./router'importstorefrom'./store'2、js-base6......
  • 单机单节点Flink的部署
    一、Flink的下载和安装1、Flink的下载官方下载网址:https://archive.apache.org/dist/flink/这里选择1.15.2这个版本 2、把Flink上传到主机上把下载好的文件上传到/opt/software上3、解压Flink安装包把Flink解压到/opt/module中,要提前创建module文件夹tar-zxvfflink-......
  • VUE学习笔记
    VUE学习笔记1.函数体格式简写格式:“方法名(){}”===>全写格式:“方法名:function(){}”2.定义对象格式对象名:{}3.全局事件总线相关的函数注册全局事件总线:在main.js的VUE实例中创建事件总线beforeCreate(){ Vue.prototype.$bus=this },1.$emit1、this.$emit('自......