美文网首页
简单介绍一下Vuex

简单介绍一下Vuex

作者: 苏码码 | 来源:发表于2018-10-31 17:53 被阅读0次

vuex主要应用于Vue.js中管理数据状态的一个库,通过创建一个集中的数据存储,供程序中所有的组件访问;
当我们开发一些中大型的项目或者说数据量比较大时,就会想起vuex,下面就用一个购物车添加商品的例子来了解一下vuex:
实现效果如下图:在一个子组件中操作商品的添加,商品数量的加减,商品删除,另一个子组件中的数据也实时更新


屏幕快照 2018-10-31 下午5.16.48.png

1、安装:npm install vuex --save
2、引用vuex,创建store实例:

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export const store = new Vuex.Store({
  // 注意 Vuex.Store中的S要大写
)}

3、部分Vuex实现代码

export const store = new Vuex.Store({
    // 单一状态树  设置属性
    state:{
      // 商品数组
        goodsList:[]
    },
    // 获取属性
    getters:{
        // 获取商品列表
        getterGoodsList(state){
            return state.goodsList;
        },
        // 获取所有商品的总价
        getterGoodsTotalPrice(state){
            var total = 0
            for (const key in state.goodsList) {
                if (state.goodsList.hasOwnProperty(key)) {
                    const element = state.goodsList[key];
                    total = total + parseFloat(element.total)
                }
            }
            return total
        }
    },
    // 改变数据状态
    mutations:{
        // 将新的商品添加到商品数组
        addGoodsToGoodsList(state,goods){
            state.goodsList.splice(0,0,goods);
        },
        // 修改选中商品的数量
        changeGoodsCount(state,payload){
            state.goodsList.forEach(element => {
                if (element.goodsId == payload.goodsId) {
                    element.count = parseInt(element.count) + parseInt(payload.count);
                    element.total = parseInt(element.count) * parseFloat(element.price);
                }
            })
        },
        // 根据商品id删除选中的商品
        deleteGoodsToGoodsList(state,item){
           state.goodsList.splice(state.goodsList.indexOf(item),1)
        }
    }
})

4、添加到购车

    addGoodsToCartAction() {
      if (this.name && this.price && this.count) {
        let goods = {
          name: this.name,
          price: this.price,
          count: this.count,
          total: this.count * this.price,
          goodsId: new Date().getTime()
        };
        this.$store.commit("addGoodsToGoodsList", goods);
        this.name = "";
        this.price = "";
        this.count = "";
      }
    }

4、减少商品数量

    reduceGoodsCount(goodsId) {
      let payload = {
        goodsId: goodsId,
        count: -1
      };
      this.$store.commit("changeGoodsCount", payload);
    }

5、增加商品数量

addGoddsCount(goodsId) {
      let payload = {
        goodsId: goodsId,
        count: 1
      };
      this.$store.commit("changeGoodsCount", payload);
    }

具体代码详见:https://github.com/zzsuyifeng/vuexDemo/tree/vuex

相关文章

  • 简单介绍一下Vuex

    vuex主要应用于Vue.js中管理数据状态的一个库,通过创建一个集中的数据存储,供程序中所有的组件访问;当我们开...

  • VUEX 简单介绍

    1.vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有...

  • 通过一个简单实例了解vuex

    简单说明 什么是vuex,vuex怎么使用,什么场景下适合使用vuex, vuex 文档中都有介绍。看完文档之后,...

  • vue状态管理vuex

    一、vuex的简单介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,简单的来说作用是:可以简单...

  • vue-vuex简单介绍

    vuex的应用场景,就是多个组件之间相互传值 创建项目选择router和vuex 打开src/store/inde...

  • 自定义vue-cli模板发布并使用

    前言:本文章主要是介绍一下如何将vue官方webpack模板加入一些简单的bootstarp风格组件,vuex,m...

  • VUEX基本介绍,包含实战示例及代码(基于Vue2.X)

    VUEX 1 VUEX基本介绍 1.1 官方API 1.2 什么是vuex 1.3 Vuex使用场景 1、Vuex...

  • Vuex简单入门

    今天试了一下Vuex,感觉跟Redux的实现思想类似。再此,简单地总结一下。 什么是Vuex 在Vue中,多组件的...

  • vuex

    Vuex介绍: Vuex官网:http://vuex.vuejs.org/ Vuex是实现数据状态管理的技...

  • vuex其实超简单,喝完这3步,还有3步

    上一篇 vuex其实超简单,只需3步简单介绍了vuex的3步入门,不过为了初学者容易消化,我削减了很多内容,这一节...

网友评论

      本文标题:简单介绍一下Vuex

      本文链接:https://www.haomeiwen.com/subject/qaoatqtx.html