深入理解Vuex

news/2024/7/10 3:03:56 标签: vue, Vuex

Vuex_0">什么是Vuex

  Vuex是实现组件全局状态管理的一种机制,可以方便的实现组件之间数据的共享。使用Vuex可以集中的管理共享数据,高效实现数据共享,另外Vuex的数据是响应式的,可以实时保持数据与页面的同步。

安装方式

  在使用vue-cli3或4建立项目的时候,有选项是否要安装Vuex,安装即可。项目完成之后,可以看到有一个store的文件夹,文件的内容:

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {}
})

Vuex_23">Vuex的使用

  1.state:存放共享数据

state: {
    // 文本框的内容
    inputValue: 'aaa'
},

  访问共享数据的两种方式:

	1)this.$store.state.inputValue 
	
	2)import { mapState } from 'vuex'
		
	   computed: {
	        // 展开运算符,将全局变量映射为自己界面的变量
			...mapState(['inputValue']) 
       }

vuex_45">  2.mutation:修改vuex中的数据

    // 更新文本框的值
    setInputValue (state, value) {
      state.inputValue = value
    },

  界面上使用的两种方式:

	1)this.$store.commit('setInputValue', value)
	
	2)import { mapMutations } from 'vuex'
		
	   methods:{
	       ...mapMutations(['setInputValue'])
       }

  3.action:处理异步任务,异步变更数据使用action,但是在action中还是要触发mutation的方式间接变更数据

state: {
    // 所有的任务列表
    list: []
},
mutations: {
    initList (state, list) {
      state.list = list
    }
},
actions: {
    getList (context) {
      axios.get('/list.json').then(({ data }) => {
        console.log(data)
        context.commit('initList', data)
      })
    }
},

  界面上使用的两种方式:

	1)this.$store.dispatch('getList')
	
	2)import { mapActions } from 'vuex'
		
	   methods:{
	       ...mapActions (['getList'])
       }

  4.getter:对store中的数据进行加工处理形成新的数据,但是并不会修改store中的数据

getters: {
    // 统计未完成的任务数量
    unDoneLength (state) {
      return state.list.filter(x => x.done === false).length
    }
}

  界面上使用的两种方式:

	1)this.$store.getters.unDoneLength 
	
	2)import { mapGetters } from 'vuex'
		
	   computed: {
	        ...mapGetters(['unDoneLength'])
       }

总结

  Vuex作为vue的核心插件,大家可以适当的用起来哈。


http://www.niftyadmin.cn/n/1659528.html

相关文章

Javascript运动概念1——缓冲运动、匀速运动、运动框架

概念—— A、运动基础: (1)让div运动起来 (2)速度——物体运动的快慢 (3)运动中的Bug a、不会停止 b、速度取某些值会无法停止 c、到达位置后再点击还会运动 d、重复点击速度加快 B、匀…

2019年终总结---在前端的成长

不知不觉,2019已经悄然而逝,回顾这一年,更多的是自己在前端方面的成长和能够在前端锻炼的各种契机。 对前端框架的接触,从Vue开始在前端接触的第一个项目,是订餐后台的重构。 刚开始的时候,讨论用什么技术来…

Javascript运动概念2——多物体运动框架

1、多个物体同时运动 例子:多个div,鼠标移入变宽 Bug——单定时器,存在问题 解决办法:将每个div一个定时器 2、多物体运动运动框架 (1)多物体运动框架 a、定时器作为物体的属性 b、参数的传递&#xf…

1.Node.js引入

1、与PHP的关系 Node.js可以作为虚拟后台服务器使用, 在PHP面试时,可能问到相关的问题 : (1)PHP并不支持多线程,但由于Apache的ISO线程,会引发潜在的多线程 (2)PHP是一…

2.Node.js的安装 及 小案例——实现Hello World

1、编辑器 初期:记事本Ediplus、Nodepad 后期:Webstrom、Hbuilder 2、Node.js的下载、安装、测试 (1)下载:http://nodejs.cn (2)安装:在windows版本操作系统下,直接点击…

1.Ajax基础——XMLHttpRequest、Get/Post、封装Ajax

1、XMLHttpRequest Ajax技术核心是XMLHttpRequest对象,简称XHR。 背景: 在XHR出现之前,Ajax式通信必须借助hack手段来实现,大多数是使用隐藏的框架和内嵌的框架。

1.PHP基础知识

1.PHP特性 (1)开放的源代码:所有的php源代码事实上都可以得到 (2)php是免费的 (3)php便捷性——十分便捷 (4)基于服务器端 由于php是运行在服务器的脚本&#xff0c…

2.PHP开发工具——Zend Studio

1、Zend Studio的下载 百度搜索“zend studio”,可下载zend stuio最新版zend studio 13.5 (但在实际操作过程中,我下载的是Zend studio 12.0.1), 步骤1:可到zend studio相对应的官网进行下载&#xff0c…