分分钟学会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简单体验
Jan 10 Javascript
Js 订制自己的AlertBox(信息提示框)
Jan 09 Javascript
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
jquery实现商品拖动选择效果代码(自写)
May 28 Javascript
jQuery中triggerHandler()方法用法实例
Jan 19 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
JavaScript分步实现一个出生日期的正则表达式
Mar 22 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
学前端,css与javascript重难点浅析
Jun 11 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 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
ThinkPHP应用模式扩展详解
2014/07/16 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
js实现购物车功能
2018/06/12 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
python中的字典详细介绍
2014/09/18 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python中的字典与成员运算符初步探究
2015/10/13 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python区分不同数据类型的方法
2019/10/14 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
人事经理岗位职责
2014/04/28 职场文书
初中学习计划书范文
2014/09/15 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
贫困证明怎么写
2015/06/16 职场文书
小学数学国培研修日志
2015/11/13 职场文书
学校就业保障协议书
2019/06/24 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
详解GaussDB for MySQL性能优化
2021/05/18 MySQL