资讯专栏INFORMATION COLUMN

vuex实现购物车逻辑

阿罗 / 3275人阅读

摘要:当需要引入多个状态和事件时不需要一个一个的引入,集体引入很方便使用的时候要先引入这些变量值都属于计算属性,在文件中写在里面属于事件实战实战是最重要的,容易发现问题,可以进步飞快用完成的有关购物车部分的小项目欢迎

前言

在小型项目中,组件与组件之间通信比较简单。父组件可以使用pros向子组件传递数据,子组件可以通过$emit向父组件传递事件和数据,一旦状态管理多了,代码就会变得十分混乱。由于状态零散的分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长。vuex状态管理库可以很方便的统一管理项目的状态,无论是对现在的开发人员还是将来新接手的开发人员都容易管理和维护。并且,一些逻辑代码也可以抽离出来,具体哪里需要用到只需要分发一下事件,简单方便。

Vuex组成

Vuex由以下部分组成:

state 存放项目中各种多组件共享的状态

mutations 存放更改state里状态的方法

getters 从state里派生出来的状态,,比如将state中的某种状态进行过滤然后获取到的新的状态

actions 通过commit mutations中的方法来改变状态,可以进行异步操作

modules将状态按模块划分,将Store对象分割成多个子模块,使代码结构更加清晰

通用配置
import * as types from "../types.js"
const state = {}
const actions = {}
const mutations = {}
const getters = {}
export default {
    state,
    actions,
    mutations,
    getters
}

若是有多个模块:

|__store
    |__moduleName1
    |__moduleName2
        |__state.js
        |__types.js
        |__actions.js
        |__mutations.js
        |__index.js
        |__getters.js
    |__index.js

index.js文件中导出模块

import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)

import moduleName1 from "./moduleName1"
import moduleName2 from "./moduleName2"


export detault new Vuex.Store({
    modules: {
        moduleName1,
        moduleName2,
    }
})

注意点:
所有子模块的getters对象里的方法会被合并到$store里,如果不同的子模块有重名的方法,就会报错,只要在index.js文件上导出模块的地方加上namespace:true就可以了。

mapGetters,mapActions,mapState

当需要引入多个状态和事件时不需要一个一个的引入,集体引入很方便
使用的时候要先引入这些变量

import {mapGetters, mapActions, mapState} from "vuex"

mapGetters,mapState值都属于计算属性,在文件中写在computed里面

computed: {
    ...mapGetters({
        ......
    }),
    ...mapState({
        ......
    }),
    otherCompuedValue() {......}
}

mapActions属于事件

methods: {
    ...mapActions({
        ......
    })
}
实战

实战是最重要的,容易发现问题,可以进步飞快~
用vuex完成的有关购物车部分的小项目:https://github.com/Gcalolin/v...

欢迎star~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93694.html

相关文章

  • vue2 + vuex 高度还原 饿了么 App,与官方后台真实数据交互,获取商品信息,实现登陆、购

    摘要:注此项目纯属个人瞎搞,正常下单请选择饿了么官方客户端。目前下单功能已经实现,下单功能完全采用官网真实数据,可以控制官网发短信或者打电话到指定的手机号码,下单后可以在手机中查看并且付款。 前言 vue2的发布后自己也研究了一段时间,奈何公司的技术栈是以react为主,没有机会好好利用vue2去做一个完整的项目。虽然写了几个demo,但和写一个完整的项目还是有很大差别的。于是自己想着用空余...

    JeOam 评论0 收藏0
  • 瞎说vuex

    摘要:本来说好写完组件通信后就会写相关的东西,现在快过去两个多月了,主要是由于自己工作的原因,后面会保证更新速度的。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。改变中的状态的唯一途径就是显式地提交。 本来说好写完组件通信后就会写vuex相关的东西,现在快过去两个多月了,主要是由于自己工作的原因,后面会保证更新速度的。不废话了,直接正题。个人博客...

    OBKoro1 评论0 收藏0
  • Vue全家桶商城全站升级之引入HTTPS,PWA,错误监控,持续构建。

    摘要:免费升级到升级到后,服务器可以开启版本,对比性能和缓存各方面要更好,还有其他新特性,可以启动功能,更好的进行离线缓存,更好的离线体验。 showImg(https://segmentfault.com/img/remote/1460000012773891?w=370&h=661); 在线地址:https://fancy.czero.cn 手机扫描二维码查看: showImg(http...

    zengdongbao 评论0 收藏0
  • [vue][plugin][vuex][自总结] - vuex-总结

    摘要:原文出自本人博客的详细总结博主博客兼乎说在前面最近在使用做项目,所以有了总结的念头。在这种情况下,只有当所有触发函数完成后,返回的才会执行。当模块被注册后,它的所有及都会自动根据模块注册的路径调整命名。 原文出自本人博客:vuex的详细总结博主博客--兼乎 说在前面 最近在使用vuex做项目,所以有了总结vuex的念头。于是在本天中午到晚上9点,我一直没有停过,为了能尽快将vuex的重...

    dackel 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<