分分钟学会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 相关文章推荐
jQuery 版本的文本输入框检查器Input Check
Jul 09 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
Feb 10 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
Jun 05 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
Nov 18 Javascript
如何实现星星评价(jquery.raty.js插件)
Dec 21 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
jQuery中实现text()的方法
Apr 04 jQuery
javascript简单实现深浅拷贝过程详解
Oct 08 Javascript
vue中keep-alive内置组件缓存的实例代码
Apr 16 Javascript
Vue使用axios引起的后台session不同操作
Aug 14 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 地址栏信息的获取代码
2009/01/07 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
Laravel日志用法详解
2016/10/09 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
如何取得中文输入的真实长度?
2006/06/24 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
初识Javascript小结
2015/07/16 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
python生成并处理uuid的实现方式
2020/03/03 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
python3 实现口罩抽签的功能
2020/03/11 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
导师工作推荐信
2015/03/27 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js