• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dafeiyunli
博客园    首页    新随笔    联系   管理    订阅  订阅

使用vuex

npm install vuex --save
//
yarn add vuex
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
import Vue from 'vue'
import Vuex from 'vuex'
import {
	login,
	getInfo,
	logout
} from '@/api/user.js'
import {
	setToken,
	removeToken,
	getToken
} from '@/utils/auth.js'

Vue.use(Vuex)

const store = new Vuex.Store({
	state: {
		token: getToken(),
		user_info: ''
	},
	mutations: {
		SET_VALUE(state, payload) {
			state[payload.key] = payload.value
		}
	},
	actions: {
		login({
			commit
		}, form) {
			return new Promise((resolve, reject) => {
				login(form).then(res => {
					const {
						data
					} = res
					commit('SET_VALUE', {
						key: 'token',
						value: data.token
					})
					setToken(data.token)
					resolve()
				}).catch(err => {
					reject(err)
				})
			})
		},
		getUserInfo({
			commit,
			state
		}) {
			return new Promise((resolve,reject)=>{
				getInfo(state.token).then(res=>{
					commit('SET_VALUE', {
						key: 'user_info',
						value: res.data
					})
					resolve(res.data)
				}).catch(err=>{
					reject(err)
				})
			})
		},
		logout({commit, state}){
			return new Promise((resolve,reject)=>{
				logout(state.token).then(res=>{
					commit('SET_VALUE', {
						key: 'token',
						value: ''
					})
					commit('SET_VALUE', {
						key: 'user_info',
						value: ''
					})
					removeToken()
					resolve()
				}).catch(err=>{
					reject(err)
				})
			})
		}
	}
})

export default store

使用

import store from './store'


new Vue({
	render: h => h(App),
	store
}).$mount('#app')




import { mapActions } from 'vuex';
methods: {
...mapActions(['login', 'getUserInfo', 'logout']),
handleLogin() {
this.login({ username: 'admin' });
},
handleLoginOut() {
this.logout();
},
handleUserInfo() {
this.getUserInfo().then(res => {
console.log(res);
});
}
},
posted @ 2021-06-10 18:42  dafeiyunli  阅读(44)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3