分分钟学会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 Array.prototype.slice使用说明
Oct 11 Javascript
JS 控件事件小结
Oct 31 Javascript
JQ获取动态加载的图片大小的正确方法分享
Nov 08 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
Jun 08 Javascript
jQuery实现类似淘宝网图片放大效果的方法
Jul 08 Javascript
JS实现消息来时让网页标题闪动效果的方法
Apr 20 Javascript
完全深入学习Bootstrap表单
Nov 28 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
Postman模拟发送带token的请求方法
Mar 31 Javascript
简单通过settimeout看javascript的运行机制
May 10 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
Jul 16 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不用正则验证真假身份证
2013/11/06 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
php排序算法实例分析
2016/10/17 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
快速了解python leveldb
2018/01/18 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
称象教学反思
2014/02/03 职场文书
室内设计专业自荐信
2014/05/31 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
初中家长评语大全
2014/12/26 职场文书
同学聚会通知书
2015/04/20 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript