state 存放的是一个对象,存放了全部的应用层级的状态,主要是存放我们日常使用的组件之间传递的变量。

我们今天重点讲解下state的几种用法,至于如何从头开始创建Vuex项目,请看我写的第一个文章。点击查看

用法一:使用this.$store

我们还是以一个累加器的例子来看如何实现,具体实现代码如下:

在state.js文件中添加一个count的变量

const state = {
count: 0
}
export default state

在src文件夹下新建一个state文件夹,并新建index.vue文件,文件内容如下:

<template>
<div class="state">
<h2>{{ count }}</h2>
<button @click="add">+ADD</button>
</div>
</template> <script>
export default {
computed: {
count () {
// 第一种用法
return this.$store.state.count
}
},
methods: {
add () {
// 第一种用法
this.$store.state.count++
}
}
}
</script>

在Vue根实例中注册了store选项,该store实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到。

用法二:引用store.js文件

具体实现代码如下:

state.js文件内容参考上面的例子,修改state/index.vue,内容如下:

<template>
<div class="state">
<h2>{{ count }}</h2>
<button @click="add">+ADD</button>
</div>
</template> <script>
import store from '@/store/store.js'
export default {
computed: {
count () {
// 第二种用法
return store.state.count
}
},
methods: {
add () {
// 第二种用法
store.state.count++
}
}
}
</script>

这种方法在Vue的模块化的构建系统中,在每个需要使用state的组件中需要频繁地导入。

用法三:使用mapState辅助函数

具体实现代码如下:

state.js文件内容参考上面的例子,修改state/index.vue,内容如下:

<template>
<div class="state">
<h2>{{ count }}</h2>
</div>
</template> <script>
// import store from '@/store/store.js'
import { mapState } from 'vuex'
export default {
computed: mapState({
count: state => state.count
})
}
</script>

<template>
<div class="state">
<h2>{{ count }}</h2>
</div>
</template> <script>
// import store from '@/store/store.js'
import { mapState } from 'vuex'
export default {
computed: {
...mapState(['count'])
}
}
</script>

当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用 mapState 辅助函数帮助我们生成计算属性

[Vuex系列] - 细说state的几种用法的更多相关文章

  1. Linux内核中等待队列的几种用法

    Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助. 1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait ...

  2. 细说Python的lambda函数用法,建议收藏

    细说Python的lambda函数用法,建议收藏 在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Pyth ...

  3. 挑战全网最幽默的Vuex系列教程:第三讲 Vuex旗下的Mutation

    写在前面 上一讲「Vuex 旗下的 State 和 Getter」,告诉了我们怎么去使用仓库 store 中的状态数据.当然,光会用肯定还不够,大部分的应用场景还得对这些状态进行操控,那么具体如何操控 ...

  4. 挑战全网最幽默的Vuex系列教程:第五讲 Vuex的小帮手

    先说两句 前面已经讲完了 Vuex 下的 State.Getter.Mutation 及 Action 这四驾马车,不知道大家是否已经理解.当然,要想真正熟练掌握的话,还是需要不断的练习和动手实践才行 ...

  5. using 的三种用法

    using 有哪三种用法? 1)引入命名空间. 2)给命名空间或者类型起别名. 3)划定作用域.自动释放资源,使用该方法的类型必须实现了 System.IDisposable接口,当对象脱离作用域之后 ...

  6. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  7. Wix 安装部署教程(十五) --CustomAction的七种用法

    在WIX中,CustomAction用来在安装过程中执行自定义行为.比如注册.修改文件.触发其他可执行文件等.这一节主要是介绍一下CustomAction的7种用法. 在此之前要了解InstallEx ...

  8. Android Intent的几种用法全面总结

    Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...

  9. Js闭包常见三种用法

        Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ...

随机推荐

  1. 002-poi-excel-导出设置单元格数据校验规则、筛选功能

    一.数据验证概述 推荐以下操作在2007之后操作 1.1.查看excel的数据验证 1.进入 2.设置规则 通过验证条件允许,可以看到是每个单元格默认只成立一种条件 1.2.POI代码开发-数据验证 ...

  2. office激活方式,超简单

    只需要安装个小小的程序,亲测安全可靠 详情点击下方链接 https://blog.csdn.net/weixin_40941966/article/details/80872533

  3. 分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案

    问题: 在Spring管理的项目中,方法A使用了Transactional注解,试图实现事务性.但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致回滚,也即事务失效了. 当这个方 ...

  4. windows 10 enterprize LTSC

    to avtivate the windows 10 enterprize LTSC version, do the following command every 6 months. slmgr - ...

  5. 通用的调用WebService的两种方法。(调用别人提供的wsdl)(转)

    转载自:http://blog.sina.com.cn/s/blog_65933e020101incz.html1.调用WebService的Client端采用jax-ws调用WebService:流 ...

  6. LeetCode_189. Rotate Array

    189. Rotate Array Easy Given an array, rotate the array to the right by k steps, where k is non-nega ...

  7. Django文档

    https://docs.djangoproject.com/zh-hans/2.1/

  8. python面向对象之封装,继承,多态

    封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容.在python的类中,封装即通过__init__函数将数据赋给对应的变量进行保存,便于其他地方使用 所以,在使用面向对象的封装特 ...

  9. charles 验证工具

    本文参考:charles 验证工具 验证工具/validate 验证工具 Charles可以通过发送到W3C HTML验证器,W3C CSS验证器和W3C Feed验证器来验证记录的响应. 验证报告在 ...

  10. Android Studio优化编译速度

    随着Android Studio的不断完善,其安卓开发者阵营也基本从Eclipse转移到了Android Studio,毕竟Android Studio是谷歌亲力亲为开发的官方开发软件.不过其最重要的 ...