[Vuex系列] - 初尝Vuex第一个例子

栏目: 编程语言 · 发布时间: 6年前

内容简介:Vuex是一个专为vue.js应用程序开发的状态管理库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护,这就是 Vuex 背后的基本思想。

Vuex是什么?

Vuex是一个专为vue.js应用程序开发的状态管理库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护,这就是 Vuex 背后的基本思想。

Vuex安装和引入

  1. 安装Vuex依赖包 npm install vuex --save

  2. 在项目中引入Vuex。在src目录下,新建一个store文件夹,用来存放vuex相关文件。

[Vuex系列] - 初尝Vuex第一个例子

3. 在stroe文件夹下新建store.js文件,用来引入vuex。

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store()
export default store

复制代码

4. 在main.js里面引入store,进行全局注入

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/store'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store, // 使用store
  components: { App },
  template: '<App/>'
})

复制代码

如何在项目中声明Vuex

  • 我们创建一个state

state是单一状态树,用一个对象就包含了全部的应用层级状态。单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。

  1. 在store文件夹下新建state.js文件,存放state变量state.js文件内容如下
const state = {
  num: 0
}
export default state
复制代码
  • 创建一个mutations

更改vuex的store中的状态的唯一方法是提交mutation。vuex中的mutation非常类似于事件:每个mutation都有一个字符串的事件类型(type)和一个回调函数(handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数。

  1. 在store文件夹下新建mutations.js,存放mutattions内容,mutations.js文件内容如下
import state from './state'

const mutations = {
  addNum () {
    state.num++
  }
}

export default mutations
复制代码
  • 创建一个getters

vuex允许我们在store中定义“getter”(可以认为是store的计算属性)。就像计算属性一样,getter的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算

  1. 在store文件夹下新建getters.js,存放getters内容,getters.js文件内容如下
import state from './state'

const getters = {
  getNum () {
    return state.num
  }
}

export default getters

复制代码
  • 创建一个actions

Action类似于mutation,不同在于:Action提交的是mutation,而不是直接变更状态。Action 可以包含任意异步操作。Action函数接受一个与store实例具有相同方法和属性的context对象,因此你可以调用context.commit提交一个 mutation,或者通过context.state和context.getters来获取state和getters。

  1. 在store文件夹下新建actions.js,存放actions内容,actions.js文件内容如下
const actions = {
  addNumAction (context, num) {
    context.commit('addNum', num)
  }
}

export default actions

复制代码
  • 在store.js中注册state,mutations,gatters,actions
import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './mutations'
import getters from './getters'
import actions from './actions'
Vue.use(Vuex)

const store = new Vuex.Store({
  state,
  mutations,
  getters,
  actions
})

export default store

复制代码

如何在组件中使用Vuex

在src文件夹下新建views文件夹,在views文件夹下新建vuex文件夹,并在vuex文件夹新建index.vue文件

[Vuex系列] - 初尝Vuex第一个例子

index.vue文件的内容

<template>
  <div class="app">
    <p>{{ num }}</p>
    <button @click="addNumAction">+ADD</button>
  </div>
</template>

<script>
import { mapActions, mapState, mapGetters } from 'vuex'
export default {
  data () {
    return {
    }
  },
  computed: {
    ...mapState([
      'num'
    ])
  },
  methods: {
    ...mapActions([
      'addNumAction'
    ]),
    ...mapGetters([
      'getNum'
    ])
  }
}
</script>

复制代码
  1. 配置路由
import Vue from 'vue'
import Router from 'vue-router'
import VueX from '@/views/vuex/index'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/vuex',
      name: 'vuex',
      component: VueX
    }
  ]
})复制代码

最终效果

[Vuex系列] - 初尝Vuex第一个例子


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编译原理

编译原理

Alfred V.Aho、Jeffrey D.Ullman、Ravi Sethi / 李建中 / 机械工业出版社 / 2003-8 / 55.00元

《编译原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。《编译原理》 是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。《编译原理》一 直被世界各地的著名高等院校和科研机构(如贝尔实验室、哥伦比亚大学、普 林斯顿大学和斯坦福大学等)广泛用作本科生和研究生编译原理......一起来看看 《编译原理》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具