uniapp、vue,vuex中state改变,getters不动态改变的完美解决方案!

摘要:
项目标志);//Flag在这里,vue将自动为项目添加Flag属性。每次更改值时,都要更改标志}});}//Getters(关键点)//例如,获取状态TotalCount中的数据总量{//计算数据总量state.cart.total=0;state.cart.list.forEach((item)=˃{if(item.flag!=772));),getter也将动态更新,flag!

//想必各位朋友一定经历着,改变state,getters却不改变的痛苦,接下来博主给出解决方案;

//方案很简单,第一步,改变state时,如改变state中的cart属性时,引入vue,使用vue set添加未定义的flag,如下:

import Vue from 'vue'; //一定要引入vue,接下来要使用

//mutations
    AddCartHandle(state, data) { //新增购物车状态
            state.cart.goods.map((item,index) => {
                if (item.id == goods_info.id) {
                    Vue.set(state,'cart',data.count); //使用Vue.set来设置值,getters才会响应,第一个为要设置的值(这里使用的是对象),第二个为第一个值的属性:state.cart,第三个值为改变state.cart最新的数据。
                    Vue.set(item,'flag',!item.flag); //flag 在这里vue会自动为item添加一个flag属性,每次改变值时,改变flag
                }
            });

    },

//getters (重点)
//如获取state中的数据总数
    TotalCount(state) { //计算数据总数
        state.cart.total= 0;
        state.cart.list.forEach((item) => {
            if (  item.flag!=772) {  //这句话中的item.flag才是重点,加个if判断,item中的flag没有这个属性,在上面Vue.set添加了这条属性,AddCartHandle使用时,由于flag都改变了如mutations中(Vue.set(item,'flag',!item.flag); ),getter也会动态更新,flag!=772只是随便写的一个数值,772无实际意义
        Vue.set(state.cart,'count',state.cart.count+item.count;
            }
        })
        return state.cart.count;
    },

免责声明:文章转载自《uniapp、vue,vuex中state改变,getters不动态改变的完美解决方案!》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇阿里云更改域名解析的 IP 地址Swing菜单与工具栏(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue通过build打包后 打开index.html页面是空白的

最近在build打包vue项目遇到了几个问题,如下: 1、npm run build打包项目之后,我们通常是把dist文件里面被压缩后的static文件跟index.html提交到服务器,但最近发现直接打开index.html页面是空白的,还会报几个错,找不到页面路径。 原因:找到config文件下index.js,全局搜索assetsPublicPath...

vue 三个环境域名 与 访问url域名不一致 配置,要是一样完全可以 取url地址

# just a flagENV = 'development' # base apiVUE_APP_BASE_API = 'http://dev.api.watermarker-v1.moviebook.cn'       # just a flagENV = 'production'# base apiVUE_APP_BASE_API...

JS最新技术ES6,结合Vue全局注册,实现Axios封装配置插件!

接下来,带来js全新技术ES6,结合Vue install全局组件实现Axios封装,以代码形式讲解。 1、请求封装 //file:src/api/http/http.js import axios from 'axios' axios.create(); axios.interceptors.request.use((config)=>{ //...

windows手动安装npm教程 即vue

1、在使用之前,先类掌握3个东西,明白它们是用来干什么的: npm: nodejs 下的包管理器。 webpack: 它主要用途是通过CommonJS 的语法把所有浏览器端需要发布的静态资源作相应的准备,比如资源的合并和打包。 vue-cli: 用户生成Vue工程模板。(帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要np...

vue中记录页面的滚动距离

业务需求:pageOne页面是一个商品列表页面,在这个页面点击商品,就会跳转到pageTwo商品详细页面。此时再从pageTwo页面返回到pageOne页面时,pageOne页面需要做到:1.记录pageOne之前的滚动的距离。2.不重新请求数据。而从其它页面进入到pageOne页面时,pageOne页面不需要记录之前的滚动距离和需要重新请求数据。 1.使...

vue后台(一)

一,项目准备工作 1.拿到已经是二次开发的代码, npm i , 安装依赖包 ES6模块暴露和导入复习 1. 导出方式一: 默认一次性导出 (只能有一个) export default xxx 本质: 整个模块是一个对象, 对象中有default属性, 即: {default: xxx} 2....