store 简单引入例子

发布时间:2023年12月28日

main.js

import store from './store'

store/index.js

import Vue from 'vue'

import Vuex from 'vuex'

import getters from './getters'

import app from './modules/app'

import settings from './modules/settings'

import user from './modules/user'

import info from './modules/info'

Vue.use(Vuex)

const store = new Vuex.Store({

? modules: {

? ? app,

? ? settings,

? ? user,

? ? info

? },

? getters

})

export default store

modules/user.js

import { login, getInfo } from '@/api/user'

import { getToken, setToken, removeToken } from '@/utils/auth'

import { resetRouter } from '@/router'

import MyStorage from '@/utils/cache'

// import { setItem } from '@/utils/cache'

import qs from 'qs'

const state = {

? token: getToken(),

? name: MyStorage.getItem('name') || '',

? avatar: MyStorage.getItem('avatar') || ''

}

const mutations = {

? SET_TOKEN: (state, token) => {

? ? state.token = token

? },

? SET_NAME: (state, name) => {

? ? MyStorage.setItem('name', name)

? ? state.name = name

? },

? SET_AVATAR: (state, avatar) => {

? ? MyStorage.setItem('avatar', avatar)

? ? state.avatar = avatar

? }

}

const actions = {

? // user login

? login({ commit }, userInfo) {

? ? const { username, password } = userInfo

? ? return new Promise((resolve, reject) => {

? ? ? login(qs.stringify({ phone: username.trim(), verifCode: password, loginType: 0 })).then(response => {

? ? ? ? const { result } = response;

? ? ? ? if(result.userType!='100'){

? ? ? ? ? MyStorage.setItem('companyId', result.id)

? ? ? ? ? MyStorage.setItem('companyName', result.name)

? ? ? ? ? MyStorage.setItem('lng', result.lng)

? ? ? ? ? MyStorage.setItem('lat', result.lat)

? ? ? ? ? commit('SET_TOKEN', response.token || '123456789')

? ? ? ? ? commit('SET_NAME', result.name)

? ? ? ? ? commit('SET_AVATAR', result.icon)

? ? ? ? ? setToken(response.token || '123456789')

? ? ? ? ? resolve()

? ? ? ? }else{

? ? ? ? ? reject(new Error("无效账号"));

? ? ? ? }

? ? ? }).catch(error => {

? ? ? ? reject(error)

? ? ? })

? ? })

? },

? // get user info

? getInfo({ commit, state }) {

? ? return new Promise((resolve, reject) => {

? ? ? getInfo(state.token).then(response => {

? ? ? ? const { data } = response

? ? ? ? if (!data) {

? ? ? ? ? reject('Verification failed, please Login again.')

? ? ? ? }

? ? ? ? const { name, avatar } = data

? ? ? ? commit('SET_NAME', name)

? ? ? ? commit('SET_AVATAR', avatar)

? ? ? ? resolve(data)

? ? ? }).catch(error => {

? ? ? ? reject(error)

? ? ? })

? ? })

? },

? // user logout

? logout({ commit }) {

? ? return new Promise((resolve, reject) => {

? ? ? MyStorage.clear()

? ? ? commit('SET_TOKEN', '')

? ? ? commit('SET_NAME', '')

? ? ? commit('SET_AVATAR', '')

? ? ? removeToken()

? ? ? resetRouter()

? ? ? resolve()

? ? })

? },

? // logout({ commit, state }) {

? // ? return new Promise((resolve, reject) => {

? // ? ? logout(state.token).then(() => {

? // ? ? ? commit('SET_TOKEN', '')

? // ? ? ? removeToken()

? // ? ? ? resetRouter()

? // ? ? ? resolve()

? // ? ? }).catch(error => {

? // ? ? ? reject(error)

? // ? ? })

? // ? })

? // },

? // remove token

? resetToken({ commit }) {

? ? return new Promise(resolve => {

? ? ? commit('SET_TOKEN', '')

? ? ? removeToken()

? ? ? resolve()

? ? })

? }

}

export default {

? namespaced: true,

? state,

? mutations,

? actions

}

引入使用

?this.$store.dispatch('user/xx', { withoutAnimation: false })

文章来源:https://blog.csdn.net/qq_34114535/article/details/135262279
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。