zoukankan      html  css  js  c++  java
  • 在Vue项目中使用Vuex

    首先在src下建立store文件夹:目录如下

     index.js:

     1 import Vue from 'vue'
     2 import Vuex from 'vuex'
     3 import mutations from './mutations'
     4 import actions from './action'
     5 
     6 Vue.use(Vuex)
     7 
     8 const state = {
     9   latitude: '', // 当前位置纬度
    10   longitude: '', // 当前位置经度
    11   cartList: {}, // 加入购物车的商品列表
    12   shopDetail: null, //商家详情信息
    13   userInfo: null, //用户信息
    14   shopid: null, //商铺id
    15   remarkText: null, //可选备注内容
    16   inputText: '', //输入备注内容
    17   invoice: false, //开发票
    18   newAddress: [], //确认订单页新的地址
    19   searchAddress: null, //搜索并选择的地址
    20   geohash: '31.22299,121.36025', //地址geohash值
    21   choosedAddress: null, //选择地址
    22   addressIndex: null, //选择地址的索引值
    23   needValidation: null, //确认订单时是否需要验证
    24   cartId: null, //购物车id
    25   sig: null, //购物车sig
    26   orderParam: null, //订单的参数
    27   orderMessage: null, //订单返回的信息
    28   orderDetail: null, //订单详情
    29   login: true, //是否登录
    30   imgPath: null, //头像地址
    31   removeAddress: [], //移除地址
    32   addAddress: '', //新增地址
    33   question: null, //问题详情
    34   cartPrice: null, //会员卡价格
    35 }
    36 
    37 export default new Vuex.Store({
    38   state,
    39   actions,
    40   mutations,
    41 })
    View Code

    mutation-types.js:

    export const RECORD_ADDRESS = 'RECORD_ADDRESS'
    export const ADD_CART = 'ADD_CART'
    export const REDUCE_CART = 'REDUCE_CART'
    export const INIT_BUYCART = 'INIT_BUYCART'
    export const CLEAR_CART = 'CLEAR_CART'
    export const RECORD_SHOPDETAIL = 'RECORD_SHOPDETAIL'
    export const RECORD_USERINFO = 'RECORD_USERINFO'
    export const GET_USERINFO = 'GET_USERINFO'
    export const CONFIRM_REMARK = 'CONFIRM_REMARK'
    export const CONFIRM_INVOICE = 'CONFIRM_INVOICE'
    export const CHOOSE_SEARCH_ADDRESS = 'CHOOSE_SEARCH_ADDRESS'
    export const SAVE_GEOHASH = 'SAVE_GEOHASH'
    export const CONFIRM_ADDRESS = 'CONFIRM_ADDRESS'
    export const CHOOSE_ADDRESS = 'CHOOSE_ADDRESS'
    export const NEED_VALIDATION = 'NEED_VALIDATION'
    export const SAVE_CART_ID_SIG = 'SAVE_CART_ID_SIG'
    export const SAVE_ORDER_PARAM = 'SAVE_ORDER_PARAM'
    export const CHANGE_ORDER_PARAM = 'CHANGE_ORDER_PARAM'
    export const ORDER_SUCCESS = 'ORDER_SUCCESS'
    export const SAVE_SHOPID = 'SAVE_SHOPID'
    export const SAVE_ORDER = 'SAVE_ORDER'
    export const OUT_LOGIN = 'OUT_LOGIN'
    export const RETSET_NAME = 'RETSET_NAME'
    export const SAVE_AVANDER = 'SAVE_AVANDER'
    export const SAVE_ADDDETAIL = 'SAVE_ADDDETAIL'
    export const SAVE_ADDRESS = 'SAVE_ADDRESS'
    export const SAVE_QUESTION = 'SAVE_QUESTION'
    export const ADD_ADDRESS = 'ADD_ADDRESS'
    export const BUY_CART = 'BUY_CART'
    View Code

    action.js:

    import { getUser, getAddressList } from '../service/getData'
    import { GET_USERINFO, SAVE_ADDRESS } from './mutation-types.js'
    
    export default {
      async getUserInfo({ commit }) {
        let res = await getUser()
        commit(GET_USERINFO, res)
      },
    
      async saveAddress({ commit, state }) {
        if (state.removeAddress.length > 0) {
          return
        }
        let address = await getAddressList(state.userInfo.user_id)
        commit(SAVE_ADDRESS, address)
      },
    }
    View Code

    mutations.js: 

    import { GET_USERINFO, SAVE_ADDRESS } from './mutation-types.js'
    
    // import { setStore, getStore } from '../config/mUtils'
    
    // import { localapi, proapi } from 'src/config/env'
    
    export default {
      // 获取用户信息存入vuex
      [GET_USERINFO](state, info) {
        if (status.userInfo && state.userInfo.username !== info.username) {
          return
        }
        if (!state.login) {
          return
        }
        if (!info.message) {
          state.userInfo = { ...info }
        } else {
          state.userInfo = null
        }
      },
    
      // 删除地址列表
      [SAVE_ADDRESS](state, newAdress) {
        state.removeAddress = newAdress
      },
    }
    View Code

    项目入口文件,main.js:

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import routes from './router/router'
    import store from './store/'
    import App from './App.vue'
    
    Vue.config.productionTip = false
    
    Vue.use(VueRouter)
    const router = new VueRouter({
      routes,
      mode: 'hash',
      strict: process.env.NODE_ENV !== 'production',
    })
    
    new Vue({
      router,
      store,
      render: (h) => h(App),
    }).$mount('#app')
    View Code

  • 相关阅读:
    不同长度的数据进行位运算
    Linux的sleep()和usleep()的使用和区别
    linux inode已满解决方法
    Debian 系统修改语言设置成英文
    IIS设置问题
    Ajax实现跨域访问的三种方法
    HTML--备忘点
    C#基础---值类型和引用类型
    dapper.net框架使用随笔
    WebService的搭建,部署,简单应用和实体类结合使用
  • 原文地址:https://www.cnblogs.com/hahahakc/p/12938493.html
Copyright © 2011-2022 走看看