vue中拿到接口,并获取数据,渲染到页面

首先index.html完成的是单页面展示,app.vue里面已经写了视图出口,
例如;先新建一个role.vue页面,写上相应的布局和内容,然后在路由中添加这个页面。

在这里插入图片描述
在这里插入图片描述
然后开始写渲染数据的方法
前提,封装好了获取数据的api接口,并在main,js中注册到了原型。

在这里插入图片描述
然后在
1,首先在api中获取接口,
在这里插入图片描述
2,在utils中封装http请求的get 和post方法,并注册到原型

import axios from "axios"


// 添加一个请求拦截器,回调函数会在发出请求时执行
// config:请求配置
axios.interceptors.request.use(config => {
    // Do something before request is sent

    // console.log(config)
    let token = sessionStorage.getItem("token") ? sessionStorage.getItem("token") : "";
    config.headers.Authorization = token;
    return config;
}, error => {
    // Do something with request error
    return Promise.reject(error);
});


// 响应拦截器

axios.interceptors.response.use(response => {
    // Do something before response is sent
    return response.data;
}, error => {
    // Do something with response error
    return Promise.reject(error);
});


function get(url,params={}){

    return new Promise((resolve,reject)=>{
        axios({
            method: 'get',
            url,
            params
          }).then((data)=>{
              resolve(data)
          }).catch(err=>{
              reject(err);
          })
    })
}

function post(url,data={}){

    return new Promise((resolve,reject)=>{
        axios({
            method: 'post',
            url,
            data
          }).then((data)=>{
              resolve(data)
          }).catch(err=>{
              reject(err);
          })
    })
}

export {get,post}

然后在main.js中注册
在这里插入图片描述
然后在store中的index.js获取数据存储

import Vue from "vue";
import Vuex from "vuex";

import { post } from "./../utils/http";
import api from "./../API/index";
import router from "./../router"

import {Message} from 'element-ui';

Vue.use(Vuex);

let store = new Vuex.Store({
  state: {
    // 相当于sessionStorage是永久仓库,数据拿进拿出都很方便,vuex是临时仓库,两者需要建立联系。
    // 刷新后,vuex的数据会消失,需要从sessionStorage中重新获取。
    token: sessionStorage.getItem("token")
      ? sessionStorage.getItem("token")
      : "",
    info: sessionStorage.getItem("info")
      ? JSON.parse(sessionStorage.getItem("info"))
      : {}
  },
  mutations: {
    setInfo(state, payload) {
      state.token = payload.token;
      state.info = payload.info;
    },
    clearInfo(state){
     state.token="";
     state.info="" 
    }
  },
  actions: {
    //   context的话就相当于state的父亲,上一级,包含着state中的所有属性,也就是mutation?
    login(contxt, payload) {
        // console.log(contxt.commit,'999')
    //   this.$http.post(this.$api.userlogin, this.ruleForm).then(res => {
    post(api.userlogin, payload).then(res => {
    console.log(res, "---");
        //验证通过,登录成功,要将数据保存到vuex中和缓存中
        if (res.code == 200) {
          // 路由传值this.$router.push(),这个方法会向history栈添加一个新纪录,所以当浏览器点击后退按钮时,会返回之前的url
          // 登录成功之后要把整个list都保存起来,
          //因为下面这里面存的是对象,要转化成字符串,才能存到store中index.js的state中
          // 放在本地存储中,
          sessionStorage.setItem("token", res.list.token);
          sessionStorage.setItem("info", JSON.stringify(res.list));
          // console.log(typeof res.list)
          // 保存在vuex中
         contxt.commit("setInfo",{token:res.list.token,info:res.list})
          // this.$router.push("/")
        //   因为引入了Router,所以可以直接用Router.push
        router.push("/");
        } else {
        //   this.$message.error(res.msg);
        Message.error(res.msg)
        }
      });
    }
  }
});
// 需要暴露和注册到main.js中,貌似自己写的文件夹里面写的东西,最好都是注册到main.js中
export default store;

然后在main.vue中的script标签中的data中,return一个data空数组用来存数据
在这里插入图片描述

在methods里面封装请求的方法
在这里插入图片描述
然后在mounted里面调用这个方法,

在这里插入图片描述
然后数据就被渲染出来了

觉得这篇文章对您有帮助,可以动动发财小手指帮忙点个赞呦 Thanks♪(・ω・)

  • 46
    点赞
  • 257
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值