分分钟学会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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
如何确保JavaScript的执行顺序 之实战篇
Mar 03 Javascript
jquery选择器的选择使用及性能介绍
Jan 16 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
Sep 03 Javascript
超详细的javascript数组方法汇总
Nov 21 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
Jul 27 Javascript
vue+webpack实现异步组件加载的方法
Feb 03 Javascript
Vue 按键修饰符处理事件的方法
May 04 Javascript
vue项目刷新当前页面的三种方法
Dec 04 Javascript
微信小程序实现左侧滑动导航栏
Apr 08 Javascript
js实现验证码干扰(静态)
Feb 22 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判断数据库中的记录是否存在的方法
2014/11/14 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
django连接oracle时setting 配置方法
2019/08/29 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
技术副厂长岗位职责
2013/12/26 职场文书
女娲补天教学反思
2014/02/05 职场文书
公司年会主持词
2014/03/22 职场文书
党员志愿者活动总结
2014/06/26 职场文书
热血教师观后感
2015/06/10 职场文书
创业计划书之面包店
2019/09/12 职场文书
Java版 简易五子棋小游戏
2022/05/04 Java/Android