vue + axios + vuex 封装请求
axios封装请求 post get等
import axios from "axios";
export default function http(url = "", params = {}, type = "GET") {
let promise;
return new Promise((resolve, reject) => {
if (type === "GET") {
let paramsStr = "";
Object.keys(params).forEach(key => {
paramsStr += key + "=" + params[key] + "&";
});
if (paramsStr !== "") {
paramsStr = paramsStr.substr(0, paramsStr.lastIndexOf("&"));
}
url += "?" + paramsStr;
promise = axios.get(url);
} else if (type === "POST") {
promise = axios.post(url, params);
}
promise
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err);
});
});
}
vuex 结合 axios的封装
第一步:api / index.js 请求方法
import http from "./http";
const baseUrl = "http://127.0.0.1:3000";
export const getHomeSwiper = () => {
http(baseUrl + "/api/homeSwiper");
};
第二步:store / state.js
export default {
homeSwiper: []
};
第三步:store / actions.js
import { getHomeSwiper } from "../api/index";
import { HOME_SWIPER } from './mutation-type';
export default {
async reqHomeSwiper({ commit }) {
const res = await getHomeSwiper();
commit(HOME_SWIPER, { homeSwiper: res.message.data });
}
};
第四步:store / mutation-type.js
export const HOME_SWIPER = 'home_swiper';
第五步:store / mutations.js
import { HOME_SWIPER } from "./mutation-type";
export default {
[HOME_SWIPER](state, { homeSwiper }) {
state.homeSwiper = homeSwiper;
}
};
第六步:在组件之中使用
<template>
<div>hot</div>
</template>
<script>
import { mapState } from "vuex";
export default {
name: "Hot",
data() {
return {};
},
computed: {
...mapState["homeSwiper"]
},
mounted() {
this.$store.dispatch("reqHomeSwiper");
},
methods: {},
components: {}
};
</script>
<style lang="scss" scoped></style>