分分钟学会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
Oct 31 Javascript
IE iframe的onload方法分析小结
Jan 07 Javascript
JavaScript中检测变量是否存在遇到的一些问题
Nov 11 Javascript
JS中数组Array的用法示例介绍
Feb 20 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
Dec 20 Javascript
Node.js操作mysql数据库增删改查
Mar 30 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
javaScript基础详解
Jan 19 Javascript
vuex 中插件的编写案例解析
Jun 10 Javascript
vuex入门最详细整理
Mar 04 Javascript
基于openlayers实现角度测量功能
Sep 28 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
深入密码加salt原理的分析
2013/06/06 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
python实现探测socket和web服务示例
2014/03/28 Python
python 远程统计文件代码分享
2015/05/14 Python
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Python手机号码归属地查询代码
2016/05/04 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python实现的矩阵类实例
2017/08/22 Python
python读取文件名称生成list的方法
2018/04/27 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Python调用C/C++的方法解析
2020/08/05 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
工作中的自我评价如何写好
2013/10/28 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS