Vuex是什么?

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

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

Vuex安装和引入

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

  2. 在项目中引入Vuex。在src目录下,新建一个store文件夹,用来存放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文件

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第一个例子的更多相关文章

  1. supersocket--SuperSocket 1.4系列文档(1) 第一个例子, EchoService

    First example, EchoService 1. 新建一个名叫 “EchoService” 的空白项目 2. 添加SuperSocket的Common和SocketBase这两个dll或者项 ...

  2. 挑战全网最幽默的Vuex系列教程:第一讲 Vuex到底是什么鬼

    先说两句 官方已经有教程了,为什么还要写这个教程呢?说实话,还真不是我闲着蛋疼,官方的教程真的是太官方了,对于刚入门 Vuex 的童鞋来说,想必看官方的教程,很多地方就如同看圣经一样,比如「欧玛尼玛尼 ...

  3. 挑战全网最幽默的Vuex系列教程:第二讲 Vuex旗下的State和Getter

    先说两句 上一讲 「Vuex 到底是个什么鬼」,已经完美诠释了 Vuex 的牛逼技能之所在(纯属自嗨).如果把 Vuex 比喻成农药里面的刘备,那就相当于你现在已经知道了刘备他是一个会打枪的力量型英雄 ...

  4. 挑战全网最幽默的Vuex系列教程:第六讲 Vuex的管理员Module(实战篇)

    写在前面 这一讲是 Vuex 基础篇的最后一讲,也是最为复杂的一讲.如果按照官方来的话,对于新手可能有点难以接受,所以想了下,决定干脆多花点时间,用一个简单的例子来讲解,顺便也复习一下之前的知识点. ...

  5. vuex是什么?怎么用,例子

    什么是vuex? 官方的解释是:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 为什么要用 ...

  6. [Vuex系列] - Module的用法(终篇)

    于使用单一状态树,应用的所有状态会集中到一个比较大的对象.当应用变得非常复杂时,store 对象就有可能变得相当臃肿.为了解决以上问题,Vuex 允许我们将 store 分割成模块(module).每 ...

  7. 初尝Windows 下批处理编程

    本文叫“ 初尝Windows 下批处理编程”是为了延续上一篇“初尝 Perl”,其实对于博主而言批处理以及批处理编程早就接触过了. 本文包括以下内容 1.什么是批处理 2.常用批处理命令 3.简介批处 ...

  8. .NET领域驱动设计—初尝(三:穿过迷雾走向光明)

    开篇介绍 在开始这篇富有某种奇妙感觉的文章之旅时我们先短暂的讨论一下关于软件开发方法论的简要: 纵观软件开发方法论,从瀑布模型.螺旋模型.RUP(统一软件开发过程).XP(极限编程).Agile(敏捷 ...

  9. 浅谈vuex使用方法(vuex简单实用方法)

    Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vu ...

随机推荐

  1. Java体系

    Java之父:詹姆斯·高斯林 java之前叫做“Oak”,后改名为Java.//Oak来源于橡树,java 来源爪哇岛的一种咖啡 Java语言平台 J2SE(Java 2 Platform Stand ...

  2. osg fbx遍历模型节点名称

    ; k<sg->getNumChildren(); k++) { //转换编 std::string name = vcfbx1.w2m1(vcfbx1.m2w1(sg->getCh ...

  3. IDEA新建本地项目关联远程git仓库

    现在远程git仓库创建一个repository,然后本地创建项目,最后进行关联.三板斧,打完收工. 第一步.第二步地球人都知道,略过不表,第三步比较关键,举个例子: 0.创建本地Git仓库:VCS - ...

  4. 详解VMware 虚拟机中添加新硬盘的方法

    一.VMware新增磁盘的设置步骤 (建议:在设置虚拟的时候,不要运行虚拟机的系统,不然添加了新的虚拟磁盘则要重启虚拟机) 1.选择“VM”----“设置”并打开,将光标定位在“硬盘(SCSI)”这一 ...

  5. [ML] Bayesian Linear Regression

    热身预览 1.1.10. Bayesian Regression 1.1.10.1. Bayesian Ridge Regression 1.1.10.2. Automatic Relevance D ...

  6. Tinymce在ASP.NET中的使用方法

    现在做网页,用FCKEditor用得比较多,它的实现原理是在要加入FCKEditor的地方加入一个iframe,并将其src指向FCKeditor/editor/fckeditor.html?Inst ...

  7. python2.7 urllib和urllib2

    urllib模块url编码和解码: 1.urllib.quote,urllib.quote_plus ,urllib.unquote ,urllib.unquote_plus urllib.quote ...

  8. Spring 本地事务

    主要原理: 事务的顶层接口: PlatformTransactionManager提供了3个方法,在申明式事务中这3个方法都是通过aop 调用的: 1.getTransaction: 进入相关需要被拦 ...

  9. 给.Net Core添加Swagger实现接口文档自动生成

    1.添加Nuget相关引用 Swashbuckle.AspNetCore

  10. idea用maven创建web项目(详细)

    引用:http://blog.csdn.net/u010361662/article/details/50605099 欢迎添加微信