uniapp项目-配置store文件夹

这篇具有很好参考价值的文章主要介绍了uniapp项目-配置store文件夹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.创建store.js

说明:创建一个新的 Vuex Store 实例,配置 Store 中的模块。

import Vue from 'vue';
import Vuex from 'vuex';
// 导入两个 Vuex 模块:moduleCart 和 moduleUser
import moduleCart from '@/store/cart.js';
import moduleUser from '@/store/user.js';
//使用vuex
Vue.use(Vuex);
//Vuex store 实例的方法,需要传入一个配置对象modules
const store = new Vuex.Store({
  
  modules: {
    //购物车相关的模块
    m_cart: moduleCart,
    //用户相关的模块
    m_user: moduleUser,
  },
});
export default store;

2.user.js

说明:文章来源地址https://www.toymoban.com/news/detail-665300.html

  • 在微信小程序中,使用 Vuex 进行状态管理时,可以通过 this.commit() 方法来触发一个 mutation,并对应传入指定的 mutation 名称。例如,this.commit('m_cart/saveToStorage') 表示触发名为 saveToStorage 的 m_cart 模块的 mutation
  • state用函数的形式。
export default {
  // 开启当前模块命令空间(必须要)
  namespaced: true,
  state: () => ({
    // 购物车的数据,存储商品信息对象
    // 默认规定需要6个属性
    cart: JSON.parse(uni.getStorageSync('cart') || '[]'),
  }),
  // 加工
  mutations: {
  // 更新所有商品的勾选状态,newState是用户传过来的状态
    updateAllGoodsState(state, newState) {
      state.cart.forEach((x) => x.goods_state = newState);
      // 持久化存储
      this.commit('m_cart/saveToStorage');
    },
    // 永久储存cart信息
    saveToStorage(state) {
      uni.setStorageSync('cart', JSON.stringify(state.cart));
    },
    // 通过id删除购物车对应的商品信息
    removeGoodsById(state, goods_id) {
      // 将商品传来以后,将id相同的过滤掉,留下其他商品信息
      state.cart = state.cart.filter((x) => x.goods_id !== goods_id);
      this.commit('m_cart/saveToStorage');
    },
    // 更新商品数量
    updateGoodsCount(state, goods) {
      const result = state.cart.find((x) => x.goods_id === goods.goods_id);
      if (result) {
        result.goods_count = goods.goods_count;
        // 持久化存储在本地
        this.commit('m_cart/saveToStorage');
      }
    },
    // 更新购物车商品的勾选状态
    updateGoodsState(state, goods) {
      const findResult = state.cart.find((x) => x.goods_id === goods.goods_id);
      if (findResult) {
        findResult.goods_state = goods.goods_state;
        this.commit('m_cart/saveToStorage');
      }
    },
    addToCart(state, goods) {
      // 根据提交的商品的id,查询购物车是否存在商品,没有的话push就行了
      const findResult = state.cart.find((x) => x.goods_id === goods.goods_id);
      // 判断
      //   console.log(findResult);
      if (!findResult) {
        state.cart.push(goods);
      } else {
        findResult.goods_count++;
        // console.log(findResult);
      }
      // 触发my_cart命令空间下的方法
      this.commit('m_cart/saveToStorage');
      // console.log(state.cart);
    },
  },
// 类似计算属性
  getters: {
    // 勾选商品的总价格
     checkGoodsAmount(state) {
    return state.cart.filter((x) => x.goods_state).reduce((total, item) => total += item.goods_count * item.goods_price, 0).toFixed(2);
     },
    // 已经勾选商品的总数量
    checkedCount(state) {
      // 过滤出有x.goods_state的值,然后将goods_count进行累加
      return state.cart.filter((x) => x.goods_state).reduce((total, item) => total += item.goods_count, 0);
    },
    // 统计购物车商品的总数量
    total(state) {
      let c = 0;
          // 循环统计商品的数量,累加到变量c中
      state.cart.forEach((x) => c += x.goods_count);
      return c;
    },

  },
};

到了这里,关于uniapp项目-配置store文件夹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#修改解决方案的名称 和解决方案文件夹的名称 ,及项目程序名称,项目文件夹名称

    修改失败了,没有备份就得炸裂,一定要切记 右键项目- 属性 - 应用程序 先将 程序集名称 与 默认命名空间 先修改好 其次,在按组合键ctrl+ f 将原来的项目名称,替换成新的名称; 替换时,一定要针对整个解决方案进行替换 ----切记 关闭解决方案 ,一定要关闭 出现无法加

    2023年04月09日
    浏览(60)
  • java项目中获取resources文件夹下文件

    方法一 获取到文件的流 方法二 直接获取路径 以上方法在服务器当中是否能获取到还未测试,公司要做个下载word文档功能,需要使用模板,于是测试了一下本地,后续将继续更新使用easypoi如何下载word文档 方法三 (重要) SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此

    2024年02月12日
    浏览(41)
  • Gitee 上传项目到仓库(上传文件夹)

    1.首先打开仓库,点击下载压缩包  2.将下载的压缩包解压,并打开,在当前目录下打开 1.在文件当前目录打开git bash     2.初始化git 该命令会生成一个隐藏的.git文件夹  如果不是第一次使用,没有必要使用该指令 3.将项目放入该目录下。如果是更改项目,则覆盖原文件 4.添

    2024年02月16日
    浏览(40)
  • 【绝对清楚】Flask项目结构(有项目文件夹详细对照说明)

    插个目前实现的登录页面~😄 之前看了很多很多的Flask框架的项目结构,了解到它是一个高度灵活的轻量级web框架,意思就是项目的结构不像Django那样有着固定的模式,而是可以根据开发者的爱好进行设计。这也就给想用正儿八经的一种结构写一个网站带来了困扰。好在看了

    2024年02月02日
    浏览(41)
  • VisualStudio解决方案多个文件夹将项目分类

    见过好多大项目,一个解决方案好多个项目,网站、动态库、测试等。放在不同的文件夹下,感觉很好。下面介绍一下方法。 首先创建一个空白解决方案 会自动创建MultiFolder解决方案目录。 新建解决方案文件夹 解决方案文件夹不会创建对应的真实目录,需手工在解决方案目

    2024年02月10日
    浏览(67)
  • [github+Windows]从github下载指定项目的单个文件或文件夹

    通过搜索发现,网页上大多流传的是Linux如何从github下载单个文件夹,对于小白来说,不想费力气地安装SVN、gitzip等等工具,将github项目中的单个文件夹下载到Whindows本地,当然是越简单越好。 通过网上查找发现了一个github下载单个文件夹的简单工具,是网页版,将网站打开

    2024年01月19日
    浏览(35)
  • 鼠标右键使用VSCode打开文件或文件夹配置

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 电脑搜索框输入regedit回车即可打开注册表 找到文件夹HKEY_CLASSES_ROOT/*/shell 在shell文件夹

    2024年02月04日
    浏览(46)
  • git如何仅合并项目下的某个文件夹

    假设目前在做的一个项目名为demoproject,目前版本为v1.0.0,标准开发都是在demoproject上进行的,但是有一个客户需要做定制化,需要将项目中的一些信息改为客户的,于是基于demoproject拉了一个v1.0.0-custom,然后将这个v1.0.0-custom交付给了客户。 过了一段时间,客户又提了新的需

    2024年01月21日
    浏览(38)
  • Git中.gitignore的配置(git上传忽略文件/文件夹)

            在实际开发过程中,我们很多项目都需要使用git工具进行代码的拉取和提交等操作。但项目由于环境配置和打包等操作生成了一些不必要上传的文件夹或者一些我们自定义的文件不需要上传,这时候我们需要去配置.gitignore文件。 语法 # 开头为注释行 空行即直接写文

    2024年02月12日
    浏览(49)
  • vscode Cmake 多目录,多文件夹,多文件联合编译配置

    前言:网上好多同学发的都是单目录(一个文件夹下),多个cpp文件的联合编译。对于多文件夹,多目录,多个CPP文件的编译可查询的资料查起来不是很容易。 现在来总结一下: 一、单文件夹(即单目录)下的多.cpp使用code runner 运行代码的方式。               其他博文有

    2024年01月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包