分分钟学会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 相关文章推荐
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
thinkphp中常用的系统常量和系统变量
Mar 05 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
Apr 10 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
Jun 06 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
判断滚动条滑到底部触发事件(实例讲解)
Nov 15 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
Aug 28 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 Javascript
Vue.js 无限滚动列表性能优化方案
Dec 02 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
Aug 13 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
PHP中的替代语法简介
2014/08/22 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
Javascript之文件操作
2007/03/07 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python输入二维数组方法
2018/04/13 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
销售实习自我鉴定
2013/12/07 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
小学毕业感言300字
2014/02/19 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
班级活动总结格式
2014/08/30 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
听证通知书
2015/04/24 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
施工现场安全管理制度
2015/08/05 职场文书