vuex操作state对象的实例代码


Posted in Javascript onApril 25, 2018

Vuex是什么?

VueX 是一个专门为 Vue.js 应用设计的状态管理架构,统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data )。

Vue有五个核心概念,state, getters, mutations, actions, modules。

总结

state => 基本数据
getters => 从基本数据派生的数据
mutations => 提交更改数据的方法,同步!
actions => 像一个装饰器,包裹mutations,使之可以异步。
modules => 模块化Vuex

State

state即Vuex中的基本数据!

单一状态树

Vuex使用单一状态树,即用一个对象就包含了全部的状态数据。state作为构造器选项,定义了所有我们需要的基本状态参数。

在Vue组件中获得Vuex属性

•我们可以通过Vue的Computed获得Vuex的state,如下:

const store = new Vuex.Store({
  state: {
    count:0
  }
})
const app = new Vue({
  //..
  store,
  computed: {
    count: function(){
      return this.$store.state.count
    }
  },
  //..
})

下面看下vuex操作state对象的实例代码

每当 store.state.count 变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。

每一个 Vuex 应用的核心就是 store(仓库)。

引用官方文档的两句话描述下vuex:

1,Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。

2,你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

使用vuex里的状态

1,在根组件中引入store,那么子组件就可以通过this.$store.state.数据名字得到这个全局属性了。

我用的vue-cli创建的项目,App.vue就是根组件

App.vue的代码

<template>
 <div id="app">
   <h1>{{$store.state.count}}</h1>  
  <router-view/>
 </div>
</template>
<script>
 import store from '@/vuex/store';
export default {
 name: 'App',
 store
}
</script>
<style>
</style>

在component文件夹下Count.vue代码

<template>
 <div>
   <h3>{{this.$store.state.count}}</h3>
 </div>
</template>
<script> 
  export default {
    name:'count',
  }
</script>
<style scoped>
</style>

store.js的代码

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
const state = {
 count: 1
}
export default new Vuex.Store({
 state,
})

2,通过mapState辅助函数得到全局属性

这种方式的好处是直接通过属性名就可以使用得到属性值了。

将Component.vue的代码进行改变

<template>
 <div>
   <h3>{{this.$store.state.count}}--{{count}}</h3>
  <h4>{{index2}}</h4>
 </div>
</template>
<script> 
  import { mapState,mapMutations,mapGetters } from "vuex";
  export default {
    name:'count',
    data:function(){
      return {
        index:10
      }
    },
    //通过对象展开运算符vuex里的属性可以与组件局部属性混用。
    computed:{...mapState(['count']),
      index2() {
        return this.index+30;
      }  
    } ,
  }
</script>
<style scoped>
</style>

总结

以上所述是小编给大家介绍的vuex操作state对象的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javaScript实现浮点数转十六进制字符
Oct 29 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
JS动态给对象添加事件的简单方法
Jul 19 Javascript
js定时器实例分享
Dec 20 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 Javascript
让Vue也可以使用Redux的方法
May 23 Javascript
Javascript获取某个月的天数
May 30 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
Mar 14 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 Javascript
Angular+ionic实现折叠展开效果的示例代码
Jul 29 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
Nov 04 Javascript
微信小程序商品详情页的底部弹出框效果
Nov 16 #Javascript
你点的 ES6一些小技巧,请查收
Apr 25 #Javascript
vue 组件使用中的一些细节点
Apr 25 #Javascript
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 #Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
Apr 25 #Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
Apr 25 #Javascript
vue短信验证性能优化如何写入localstorage中
Apr 25 #Javascript
You might like
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
实例详解带参数的 npm script
2019/05/28 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
Python的动态重新封装的教程
2015/04/11 Python
python使用fork实现守护进程的方法
2017/11/16 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
彪马美国官网:PUMA美国
2017/03/09 全球购物
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
遗嘱公证书标准样本
2014/04/08 职场文书
假期安全教育广播稿
2014/10/04 职场文书
营销与策划实训报告
2014/11/05 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
民事起诉书范本
2015/05/19 职场文书
团组织关系介绍信
2019/06/24 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
nginx容器方式反向代理实战
2022/04/18 Servers