分分钟学会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的并行运算实现代码
Nov 19 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
May 19 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
Dec 01 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
Jul 27 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
Aug 22 Javascript
Javascript数组Array基础介绍
Mar 13 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
Jun 02 Javascript
详解Vue使用命令行搭建单页面应用
May 24 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 jQuery
vue.js element-ui tree树形控件改iview的方法
Mar 29 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
Sep 27 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 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 模拟登陆MSN并获得用户信息
2009/05/16 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
js 数组操作代码集锦
2009/04/28 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
Python实现单词翻译功能
2017/06/06 Python
Python使用sorted排序的方法小结
2017/07/28 Python
mac下如何将python2.7改为python3
2018/07/13 Python
Python整数对象实现原理详解
2019/07/01 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
酒店总经理岗位职责范本
2014/08/08 职场文书
大学生交通专业求职信
2014/09/01 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
javascript实现计算器功能详解流程
2021/11/01 Javascript