分分钟学会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 相关文章推荐
Javascript 遍历页面text控件详解
Jan 06 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
jquery插件star-rating.js实现星级评分特效
Apr 15 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
用Vue.js实现监听属性的变化
Nov 17 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
Jul 30 Javascript
微信小程序实现预览图片功能
Oct 22 Javascript
Node.js assert断言原理与用法分析
Jan 04 Javascript
详解Element 指令clickoutside源码分析
Feb 15 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简单封装了一些常用JS操作
2007/02/25 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
js history对象简单实现返回和前进
2013/10/30 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
vue v-model的用法解析
2020/10/19 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
Django model class Meta原理解析
2020/11/14 Python
行政人事岗位职责
2014/03/17 职场文书
董事长助理岗位职责
2015/02/11 职场文书
接待员岗位职责
2015/02/13 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
前端JavaScript大管家 package.json
2021/11/02 Javascript