分分钟学会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 相关文章推荐
js打印纸函数代码(递归)
Jun 18 Javascript
jQuery UI 实现email输入提示实例
Aug 15 Javascript
被遗忘的javascript的slice() 方法
Apr 20 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
Dec 14 Javascript
JSONObject使用方法详解
Dec 17 Javascript
jqueryMobile使用示例分享
Jan 12 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
纯JavaScript实现实时反馈系统时间
Oct 26 Javascript
jQuery/JS监听input输入框值变化实例
Oct 17 jQuery
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
React实现动效弹窗组件
Jun 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
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php查询whois信息的方法
2015/06/08 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
13个PHP函数超实用
2015/10/21 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Python argparse模块应用实例解析
2019/11/15 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
商超业务员岗位职责
2014/03/12 职场文书
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技