Vuex之理解state的用法实例


Posted in Javascript onApril 19, 2017

1.什么是state?

上一篇文章说了,Vuex就是提供一个仓库,仓库里面放了很多对象。其中state就是数据源存放地,对应于与一般Vue对象里面的data(后面讲到的actionsmutations对应于methods)。

响应书存储:state里面存放的数据是响应式的,Vue组件从store中读取数据,若是store中的数据发生改变,依赖这个数据的组件也会发生更新。(这里“状态”=“数据”),也就是是说数据和视图是同步的。

2.局部状态

获取:在Vue组件中获取数据,最直接的可以通过计算属性中获取;

组件仍然可以保存局部状态:虽然说VuexStore仓库让我们同一管理数据变得更加方便,但是代码一多也会变得冗长,有些组件的数据是自己严格自用,我们可以将state放在组件自身,作为局部数据,专供此组件使用,其他的组件不能用。

3.mapState

mapState的作用是把全局的 state getters 映射到当前组件的 computed 计算属性中,this.$store.state

使用示例

import {mapState} from 'vuex' 
 export default {
 computer :
 mapState({
  count: state => state.count,
  'count' // 映射 this.count 为 store.state.count
 })
}

看看源码

export function mapState (states) {
  const res = {}  //定义一个对象
  normalizeMap(states).forEach(({ key, val }) => {
  // normalizeMap()函数初始化states数据
     res[key] = function mappedState () {
      return typeof val === 'function'
      // 判断val是否是函数
      ? val.call(this, this.$store.state, this.$store.getters)
      // 若val是函数,将store的state和getters作为参数,返回值作为mapped State的返回值
      : this.$store.state[val]}})
    return res // 返回的是一个函数
  }
//初始化方法 
 function normalizeMap (map) {
    return Array.isArray(map) //判断state是否是数组
    ? map.map(key => ({ key, val: key }))
    // 是数组的话,调用map方法,将每一个数组元素转换成{key,val:key}
    : Object.keys(map).map(key => ({ key, val: map[key] }))
    // 否则就是对象,遍历对象,将每一个val变成val:key
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript实现在线客服效果
Jul 15 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
vue中的计算属性的使用和vue实例的方法示例
Dec 04 Javascript
JavaScript实现一个带AI的井字棋游戏源码
May 21 Javascript
node+express框架中连接使用mysql(经验总结)
Nov 10 Javascript
js模拟F11页面全屏显示
Sep 17 Javascript
微信小程序实现页面浮动导航
Jan 08 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
Mar 02 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
Feb 08 Javascript
vue打包时去掉所有的console.log
Apr 10 Vue.js
微信小程序 聊天室简单实现
Apr 19 #Javascript
Vuex之理解Store的用法
Apr 19 #Javascript
微信小程序 判断手机号的实现代码
Apr 19 #Javascript
Vuex简单入门
Apr 19 #Javascript
微信小程序 滚动到某个位置添加class效果实现代码
Apr 19 #Javascript
微信小程序 slider的简单实例
Apr 19 #Javascript
详解Node.js中exports和module.exports的区别
Apr 19 #Javascript
You might like
如何利用PHP执行.SQL文件
2013/07/05 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
vue 粒子特效的示例代码
2017/09/19 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
Python最长公共子串算法实例
2015/03/07 Python
python中解析json格式文件的方法示例
2017/05/03 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
python中如何使用insert函数
2020/01/09 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
《蒲公英》教学反思
2014/02/28 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
员工工作自我评价
2014/09/26 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
谢师宴邀请函
2015/02/02 职场文书
创先争优活动个人总结
2015/03/04 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
golang特有程序结构入门教程
2021/06/02 Python
MySQL快速插入一亿测试数据
2021/06/23 MySQL
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS