分分钟学会vue中vuex的应用(入门教程)


Posted in Javascript onSeptember 14, 2017

vuex.js

状态(数据)管理

在vue中当我们管理数据的时候比较乱,我们要用到下面的这个库,vuex.js

Vuex介绍

每一个Vuex应用的核心就是store(仓库),他是用来存储数据的

"store" 基本上就是一个容器,它包含着你的应用中大部分的状态(state)。Vuex 和单纯的全局对象有以下两点不同

1.Vuex 的状态存储是响应式的

2.你不能直接改变 store 中的状态

vuex有6个概念

  • Store(最基本的概念)(创库)
  • State (数据)
  • Getters(可以说是计算属性)
  • Mutations
  • Actions
  • Modules

让我们看看怎么来创建一个创库

store 用来储存数据(状态)

new Vuex.Store({})

数据我们放到state里面

state:{}

让我们看看怎么来读取里面的数据

store.state.数据

接下来让我们看看怎么去修改数据

mutations: {}

我们怎么调mutations的数据

用commit()方法来调用

接下来让我们做一个小效果来看一下vuex在vue中怎么应用

我们做一个购物车加减按钮的效果

运行效果

分分钟学会vue中vuex的应用(入门教程)

<div id="app"></div>

<template id="tpl">
  <div>
    <tip></tip>
    <but></but>
  </div>
</template>

<script>

  var store = new Vuex.Store({
    state:{
      count:0
    },
    mutations:{
      jia (state) {
        state.count++
      },
      jian (state) {
        state.count--
      }
    }
  });

  var vm = new Vue({
    el:"#app",
    template:"#tpl",
    components:{
      tip:{
        template:"<div>{{$store.state.count}}</div>"
      },
      but:{
        template:`
          <div>
            <input type="button" value="+" @click="$store.commit('jia')"/>
            <input type="button" value="-" @click="$store.commit('jian')"/>  
          </div>
        `
      }
    },
    store
  });
</script>

我们从store里面获取的数据最好放到计算属性中

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

下面我们做一个小的效果(注意:注释的计算属性和下面使用mapState辅助函数2个结果是相同的)

当映射的计算属性的名称与 state 的子节点名称相同时,我们也可以给 mapState 传一个字符串数组。

运行效果

分分钟学会vue中vuex的应用(入门教程)

<script>
  //我们从store里面获取的数据最好放到计算属性中
  var store = new Vuex.Store({
    state:{
      count:0,
      num1:1,
      num2:2
    },
    mutations:{
      jia (state) {
        state.count++
      },
      jian (state) {
        state.count--
      }
    }
  });
  var vm = new Vue({
    el:"#app",
    template:"#tpl",
    components:{
      tip:{
      //创建计算属性
      
        // computed:{
        //   count(){
        //     return this.$store.state.count;
        //   },
        //   num1(){
        //     return this.$store.state.num1;
        //   },
        //   num2(){
        //     return this.$store.state.num2;
        //   }
        // },
        //使用mapState辅助函数
        //computed:Vuex.mapState({
          // count:state=>state.count,
          //num1:state=>state.num1,
          //num2:state=>state.num2
        //}),
        //mapState 传一个字符串数组
        computed:Vuex.mapState(['count' , 'num1' , 'num2']),
        template:"<div>{{count}}{{num1}}{{num2}}</div>"
      },
      but:{
        template:`
          <div>
            <input type="button" value="+" @click="$store.commit('jia')"/>
            <input type="button" value="-" @click="$store.commit('jian')"/>  
          </div>
        `
      }
    },
    store
  });
</script>

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

Javascript 相关文章推荐
JS Timing
Apr 21 Javascript
javascript下IE与FF兼容函数收集
Sep 17 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
Nov 10 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
Nov 20 Javascript
JS 有趣的eval优化输入验证实例代码
Sep 22 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 Javascript
使用D3.js制作图表详解
Aug 13 Javascript
vue源码中的检测方法的实现
Sep 26 Javascript
将RGB值转换为灰度值的简单算法
Oct 09 Javascript
JS实现电脑虚拟键盘打字测试
Jun 24 Javascript
html实现随机点名器的示例代码
Apr 02 Javascript
JS中跳出循环的示例代码
Sep 14 #Javascript
JS验证码实现代码
Sep 14 #Javascript
快速将Vue项目升级到webpack3的方法步骤
Sep 14 #Javascript
浅谈vue中数据双向绑定的实现原理
Sep 14 #Javascript
JavaScript动态绑定详解
Sep 14 #Javascript
React-Native使用Mobx实现购物车功能
Sep 14 #Javascript
JavaScript requestAnimationFrame动画详解
Sep 14 #Javascript
You might like
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
javascript的函数
2007/01/31 Javascript
轻轻松松学习JavaScript
2007/02/25 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
详解jQuery选择器
2016/12/21 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
mac上node.js环境的安装测试
2017/07/03 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
python求解水仙花数的方法
2015/05/11 Python
python矩阵的转置和逆转实例
2018/12/12 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Python3中列表list合并的四种方法
2019/04/19 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
python实现滑雪游戏
2020/02/22 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
离婚协议书范文2016
2016/03/18 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android