博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用axios+vuex来调接口使数据随处可用
阅读量:6847 次
发布时间:2019-06-26

本文共 2897 字,大约阅读时间需要 9 分钟。

首先安装:axios和vuex

这里推荐使用:vue ui来以插件的形式安装axios,注意vue ui是脚手架3.0才开始有这个,vuex的安装我就不在介绍了请自行安装。
安装好整个项目后包括axios和vuex,这个时候我们再对项目的目录简单的改改下:

第一步:在src目录下新建文件夹stores目录,再建目录modules(存放自己创建的文件)和同级文件getters.js。

第二步:把main.js同层级下的store.js移到stores目录里,把名称改成index.js

import Vue from "vue";import Vuex from "vuex";import app from "./modules/app.js"; //modules目录下随意创建你要的文件,这里我创建了app.js文件import getters from "./getters";Vue.use(Vuex);const store = new Vuex.Store({  modules: { app },  getters});export default store;

第三步:把main.js里的store.js的引入地址改成如下即可:

import store from "./stores";

第四步:把modules目录里的app.js修改如下,这里我已经使用Promise创建了登录和退出的两个例子,当接口返回成功有带回的数据我可以在这里做处理到state里,这个时候,我就可以在整个项目的随便一个组件里,使用compoted来获取到值,当然这里你要可以使用cookie或者sessionStorage,localStorage来做这个缓存你的用户信息,这里我是放在utils目录的auth.js文件里:

computed: { //任何一个组件里怎么调用    userinfo() {      return this.$store.state.app.userinfo;    }  },
import { login, logout } from "@/api/app";const app = {  state: {    userinfo: {},  },  mutations: {    LOGIN_USER_INFO: (state, obj) => {      state.userinfo = obj;    }  },  actions: {    // 登录    doLogin({ commit }, userInfo) {      return new Promise((resolve, reject) => {        login(userInfo.username, userInfo.password)          .then(response => {            commit("LOGIN_USER_INFO", response.data);            resolve(true);          })          .catch(error => {            reject(error);          });      });    },//退出    doLogout({ commit }) {      return new Promise((resolve, reject) => {        logout()          .then(response => {            resolve(response);          })          .catch(error => {            reject(error);          });      });    }  }};export default app;

第五步:在src下创建api目录,里面创建api.js文件内容如下,这里引入request.js是axios的东东,我这里是放在src目录下的utils目录里,主要用来调接口,报错提示,设置headers里的Authorization值等,可以自行看axios的文档即可:

import request from "_u/request";export function login(username, password) {  return request({    url: "/auth/login",    method: "post",    data: {      username,      password    }  });}export function logout() {  return request({    url: "/auth/logout",    method: "post"  });}

第六步:当你创建好后,你就可以这样的在任何一个组件里怎么调用api:

this.$store.diapatch('doLogin',{username:'',password:''}).then(json=>{  if(json.code == 0){  //做你任何的逻辑处理    console.log('成功登录')    }})

贴出我utils目录里的auth.js文件内容,你可以在任何一个组件里怎么调用:

import { getStorage, setStorage, removeStorage } from "@/utils/auth";
export function getStorage(key) {  return sessionStorage.getItem(key);}export function setStorage(key, val) {  return sessionStorage.setItem(key, val);}export function removeStorage(key) {  return sessionStorage.removeItem(key);}export function getLocal(key) {  return localStorage.getItem(key);}export function setLocal(key, val) {  return localStorage.setItem(key, val);}export function removeLocal(key) {  return localStorage.removeItem(key);}

转载于:https://blog.51cto.com/13981400/2399144

你可能感兴趣的文章
演讲稿丨史忠植 司马贺的人工智能创新之路
查看>>
PostgreSQL 十亿级模糊查询最佳实践
查看>>
Java魔法堂:注释和注释模板
查看>>
【索引】分区表索引重建过程的10704事件跟踪
查看>>
iOS解决NSTimer引用问题
查看>>
脊髓损伤怎么康复好?成都顾连康复治疗专业可靠
查看>>
区块链100讲:以太坊Solidity函数的external/internal,public/private区别
查看>>
js-(枚举,自身,继承,Symbol,Iterator)口诀
查看>>
SSM项目遇到的问题(三)
查看>>
在 React 中处理数据流问题的一些思考
查看>>
Vue CLI 3.x开发环境搭建
查看>>
小白学python系列-(1)环境的安装
查看>>
Spring Cloud自定义引导属性源
查看>>
Android之UI学习篇六:ImageView实现图片旋转和缩放
查看>>
我的友情链接
查看>>
宿主机与vmware fedora 9.0 共享文件(samba共享)
查看>>
No package 'eventlog' found
查看>>
JDK7 源码学习系列——ClassLoader
查看>>
设计twitter(包含打分,获取,关注,取关)Design Twitter
查看>>
用ASA931做SSL ***
查看>>