分分钟学会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 模拟点击广告
Jan 02 Javascript
Jquery中对数组的操作代码
Aug 12 Javascript
jquery cookie的用法总结
Nov 18 Javascript
学习使用jquery iScroll.js移动端滚动条插件
Mar 24 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
JSON与JS对象的区别与对比
Mar 01 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
JS实现数据动态渲染的竖向步骤条
Jun 24 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 Javascript
vue组件入门知识全梳理
Sep 21 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
星际争霸任务指南——虫族
2020/03/04 星际争霸
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP加密解密类实例分析
2015/04/20 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
Python中join和split用法实例
2015/04/14 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
大学生个人简历自我评价
2013/11/16 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
厕所文明标语
2014/06/11 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
小平您好观后感
2015/06/09 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
关于运动会的广播稿
2015/08/19 职场文书