vuex获取数据三连环

293 阅读1分钟

1.向服务器发起ajax请求,

请求地址:XX/XXX

请求方式:GET||POST

2.获取购物车数据,操作VueX三连环,组件获取数据,展示数据

对axios进行二次封装

截屏2022-04-13 下午11.55.38.png

1.去index.js请求接口

//get请求方式
    export const reqCartList = ()=>requests({url:'/XXX/XXX',method:'get'})
//post请求方式(带参数)
    export const reqAddOrUpdateShopCart = (skuId,skuNum)=>requests({url:`/XXX/XXX/${ skuId }/${ skuNum }`,method:'post'})

2.去仓库存数据

-store创建新的小仓库

-store的index.js大仓库中引入小仓库

截屏2022-04-14 上午12.10.34.png

3.在小仓库中进行数据获取,state存取数据,mutation操作state,action是获取数据的方法后携带数据提交给mutation

-mutaion只能执行同步任务,改变state的值

-action可以执行异步任务

截屏2022-04-14 上午10.53.09.png

3.去组件捞数据

-this.$store.dispatch('getCartList'); 调用Store中的getCarList方法

-dispatch是异步操作下

//异步
this.$store.dispatch('getlists',name)
//取值
this.$store.getters.getlists

-commit是同步操作下

//同步
this.$store.commit('changeValue',name)
//取值
this.$store.getters.getlists

截屏2022-04-14 上午11.22.54.png

这时候就可以在Vuex中看到我们已经拿到GETCARTLIST里的数据了,接下来就是捞有用的数据

image.png

//引入vuex中的getter到的数据
import {mapGetters} from 'vuex'
//在computed中获取数据
 computed:{
      ...mapGetters(['cartList']),
      cartInfoList(){
        return this.cartList.cartInfoList||[];
      }
    }
//OR 利用mapstate将数据从库中引入

import {mapState} from 'vuex'
computed:{
      ...mapState({
        addressInfo:state=>state.trate.address,
        orderInfo:state=>state.trate.address
      })
    },

截屏2022-04-19 下午9.03.08.png