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. 数据库连接池Flask-SQLAlchemy中多线程安全的问题

    使用flask-sqlalchemy写代码码到一半,突然想到,Session是否是线程安全的?于是上官方文档,答案是否! 那问题来了,怎么破?因为它会牵涉到多线程情况下,调用rollback导致的不可 ...

  2. Qt编写自定义控件49-飞机仪表盘

    一.前言 飞行仪表是测定和表示飞机数据的工具,飞机中必不可少的一部分,飞行员根据飞行仪表表示的数据才能正确地做出判断.一般飞机仪表包括高度表+空速表+垂直速率表+姿态仪+航向指示表+转弯协调表. 这次 ...

  3. 爆库记录(X-Forwarded-For注入漏洞实战 记录)

    环境位置: https://www.mozhe.cn/bug/detail/QWxmdFFhVURDay90L0wxdmJXSkl5Zz09bW96aGUmozhe 参考: http://www.fr ...

  4. HTML、CSS之查遗补漏

    inline-block3个额外像素宽度问题 先看下例子: Title .sp{ /*border: 1px solid lightcoral;*/ display: inline-block; he ...

  5. Egret入门学习日记 --- 第十七篇(书中 7.4~8.2节 内容)

    第十七篇(书中 7.4~8.2节 内容) 昨天看到 7.3 节,那么今天. 开始 7.4节.     好吧,这些其他的服务器运行知识,就不搞了... 至此,7.4节 内容结束. 开始 7.5节 内容. ...

  6. Kali之Metasploit生成apk后门控制安卓

    扫盲教程,大佬勿喷. 实验中请更改为你环境的IP. 生成apk后门 Kali Linux(Hack):192.168.169.76 Android(靶机):192.168.169.137 启动kali ...

  7. 【链接】js监听input输入框内容变化

    https://blog.csdn.net/idomyway/article/details/79078625 $("#input1").bind("input prop ...

  8. 1、1通过maven建立spring boot项目(不用联网)

    1.把以前spring boot项目的pom.xml导入进来 2.修改pom.xml  里面项目名改成自己项目名 3.复制配置文件 spring: datasource: url: jdbc:mysq ...

  9. CNN-4: GoogLeNet 卷积神经网络模型

    1.GoogLeNet 模型简介 GoogLeNet 是2014年Christian Szegedy提出的一种全新的深度学习结构,该模型获得了ImageNet挑战赛的冠军. 2.GoogLeNet 模 ...

  10. [转帖]当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?

    改天学习一下. https://www.cnblogs.com/alisystemsoftware/p/11570806.html   当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题 ...