vuex使用心得

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。

  通俗点讲就是管理各种交互数据的

什么情况下使用Vuex?

  当自己因为组件间数据交互越来越复杂,而代码越写越迷糊时,就可以使用Vuex了

安装Vuex

  1. 直接去官网下载,然后再script中引用,就像jquery一样,(这样引用除非是写demo练习,实际工作中好像没人这样用,反正我没用过)
  2. 使用Vue-cli时 npm install vuex --save ,在一个模块化的打包系统中,必须通过 Vue.use()来安装 Vuex:
import Vue from ‘vue‘
import Vuex from ‘vuex‘
Vue.use(Vuex)

开始使用

创建一个 store, 直接store.state就可以获取状态对象;使用模块化时,把store挂载到Vue实例上,全局使用this.$store.state获取对象

const store = new Vuex.Store({

state: {

count: 0

}

// state 使用模块化的话,可以单独写一个js引入

})

console.log(store.state.count) // => 0

核心概念

Vuex.Store()中传入的参数

  state : 定义原始数据 通过 this.$store.state 获取,还可以通过vuex封好的api mapState获取

mport { mapState } from ‘vuex‘
  computed: {
    ...mapState({
      // count: ‘count‘,
      // count: state => state.count
    })
  }
// 传入数组
...mapState([
  ‘count‘
])//this.count访问

  mutations: 更改 Vuex 的 store 中的状态, mutations对象里面定义一个函数, 函数里面只能写同步函数,通过this.$store.commit(‘changeCount‘, 999999999)改变count,也可以mapMutation改变

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    changeCount (state, n) {
      state.count = n
    }
  }
})                                                // mutations中changeCount为自己定义的函数,state为定义的原始数据对象,n为传进参数,多个参数需以对象形式传入
this.$store.commit(‘changeCount‘, 999999999)      // 此时count 为 999999999
import {mapMutations} from ‘vuex‘
methods: {
  ...mapMutations({
    changeCount: ‘changeCount‘
  })
}                                                 //此时可以调用this.changeCount(999999999)改变count

  getters: 获取数据,获取原始数据或者把原始数据处理成自己想要的格式暴露出来,getters里面自定义一个函数getNewCount,参数state为原始数据对象,通过this.$store.getters.getNewCount触发,也可以通过mapGetters触发

  getters: {
    getNewCount (state) {
      return state.count + 1
    }
  }
  // count自定义函数state原始数据对象
  this.$store.getters.getNewCount
  // 触发getters  得到1
  import {mapGetters} from ‘vuex‘
  computed: {
    ...mapGetters({
      newCount: ‘getNewCount‘
    })
  }
  // this.newCount访问
  getters: {
    count(state => state.count)
  }
 // 一般获取count原始值用getters包装一层,不直接用this.$store.state获取

  actions: actions 类似于 mutations, actions 提交的是 mutations,而不是直接变更状态。actions 可以包含任意异步操作。当多个mutations要同时触发时,可以通过actions封装一个自定义函数all,通过this.$store.dispatch(‘all‘, {count: 1, num: 2})触发, 也可用mapActions触发

  mutations: {
    changeCount (state, n) {
      state.count = n
    },
    changeNum (state, n) {
      state.num = n
    }
  },
  actions: {
    all (store, {count, num}) {
      store.commit(‘changeCount‘, count)
      store.commit(‘changeNum‘, num)
    }
  },
  // 再定义一个原始数据num: 0,mutations中添加一个改变num的函数,  //actions中all为自定义函数,参数store等价于new Vue.Store()出来的实例,剩余参数需要以对象形式传入
  this.$store.dispatch(‘all‘, {count: 1, num: 2})
  // actions中的all函数会同时触发‘changeCount‘,‘changeNum‘改变数据
  import {mapMutaions} from ‘vuex‘
  methods: {
    ...mapActions({
      all: ‘all‘
    })
  }
  // 直接调用 this.all({count: 1, num: 2}) 改变数据

  modules: 当应用变得非常复杂时, 将 store 分割成模块。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割

... 待续

原文地址:https://www.cnblogs.com/guilishabai/p/9344527.html

时间: 2024-10-19 22:31:15

vuex使用心得的相关文章

vuex使用心得分享(填坑)

今天我们简单说一下vuex的使用,vuex是什么呢,相当于react的redux,如果项目使用数据过多的话,直接管理是非常不方便的,那么采用vuex,那些繁琐的问题就迎刃而解了,首先我们先看看官方对vuex的说明: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调

使用Vuex心得

之前一直都是看别人写的vuex感觉还挺好理解的,今天自己根据需求写了下vuex,一下子不知道怎么写了, 想要用好vuex还是先要知道原理: 参考好博客写的非常到位:https://www.cnblogs.com/DM428/p/7293867.html 基本组成:     注意到这个store对象包含三个子对象: state.mutations.actions    其中state用于存储数据,类似vue实例的data属性.     mutations用于递交更改,对state对象中的属性数据进

探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用

前言 首先说明这并不是一个教程贴,而记事本应用是网上早有的案例,对于学习 vuex 非常有帮助.我的目的是探索 vuex 2.0 ,然后使用 vue 2.0 + vuex 2.0 重写这个应用,其中最大的问题是使用 vue-cli 构建应用时遇到的问题.通过这些问题深入探索 vue 以及 vuex . 我对于框架的学习一直断断续续,最先接触的是 react,所以有一些先入为主的观念,喜欢 react 更多一点,尤其在应用的构建层面来说.之所以断断续续,是因为自己 JS 基础较弱,刚开始学习的时候

前端框架Vue自学之Vuex(八)

终极目标:掌握和使用Vue(全家桶:Core+Vue-router+Vuex) 本博客目的:记录Vue学习的进度和心得(Vuex) 内容:学习和使用Vuex. 正文: Vuex 一.认识Vuex 二. 原文地址:https://www.cnblogs.com/xinkuiwu/p/12115274.html

使用 Vuex + Vue.js 构建单页应用

鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] -------------------- 华丽的分割线 -------------------- 原文地址:https://coligo.io/learn-vuex-by-building-notes-app/ 前言:在最近学习 Vue.js 的时候,看到国外一篇讲述了如何使用 Vue.js 和 Vuex 来构建一个简单笔记的单页应用

Delphi组件indy 10中IdTCPServer修正及SSL使用心得

indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰.Indy9发展到了indy10几乎完全不兼容,可叹啊.言归正传.在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程中执行的,通常情况下这没有问题,但是在特殊的情况下会造成问题,如果其他部分的程序写得有问题就会出现漏洞.

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

参加老男孩linux培训心得

参加老男孩linux培训心得 时间如白驹过隙,已经不知不觉来到老男孩培训已经三个月了.在这三个月中我渐渐得到了成长,专业技术成长,以及为人处事之道与思想的提高. 我一共就总结以下了三点     一.思想 在我刚来老男孩的时候,老师天天上课前讲一段思想,我当时不太明白,不赶紧上课,讲这干啥呢?而且老师早一点讲完,又可以招下一批学生了,老讲思想,这不是自断财路么?随着时间的流逝,渐渐的我悟懂了点.人在那里都可以学技术,但是学会了技术没有思想,一旦来了新事物,就会接受的很慢.尤其在互联网这个圈子里,软

Linux串口IO模式的一些心得

众所周知,在Linux系统下所有设备都是以文件的形式存在,串口也一样. 通常I/O操作都是有阻塞与非阻塞的两种方式. 其中"超时"这个概念其实是阻塞中的一种处理手段,本质还是属于阻塞的I/O模式. 在Linux中串口的IO操作 本文将它分为三种状态: 阻塞状态 超时状态 非阻塞状态 这三种状态的转换组合有这么几种: 阻塞 --> 超时 阻塞 --> 非阻塞 超时 --> 阻塞 超时 --> 非阻塞 非阻塞 --> 阻塞 我们一个一个来分析 首先在一个串口的