美文网首页
axios 在dva中的使用

axios 在dva中的使用

作者: 第2世界 | 来源:发表于2020-02-07 22:25 被阅读0次

使用axios获取后台数据

services层:

request.js



 import axios from 'axios'

 export default async function request (options) {
  const service = axios.create({
    // baseURL: 'https://api.example.com'
  });
  // request拦截器
  service.interceptors.request.use(config => 
    // 在发送请求之前做些什么
    config
  , error => {
    // 对请求错误做些什么
    Promise.reject(error)
  })
  // 添加响应拦截器
  service.interceptors.response.use((response) => 
    // 对响应数据做点什么
    response
  , (error) => 
    // 对响应错误做点什么
    Promise.reject(error)
  );
  let response
  try {
      response = await service(options)
      return response
  } catch (err) {
      return response
  }
}

api.js

import request from '@/services/request'

// 
// eslint-disable-next-line import/prefer-default-export
export function fetchData(params,data) {
  return request({
    // baseURL: 'https://www.easy-mock.com/mock/5a98c04628e12f3fbc3fd21a/xinedai',
    url: '/api/xxx/xxxxx',//接口名称
    method: 'post',
    params,
    data
  })
}

models层:

model.js

import { rtsGetCategorysList } from '@/services';
import { fetchData} from '@/services/api';

export default {
  namespace:"spending",// 命名空间名字,必填  
  state:{// state就是用来放初始值的
    payCode:"00"
  },
  /** 
   * // 能改变界面的action应该放这里,
   * 这里按官方意思不应该做数据处理,只是用来return state 从而改变界面
  */
 // 与后台交互,处理数据逻辑的地方
  effects:{
    *fetchData({ payload }, { call, put }){
      const response = yield call(fetchData, payload);
      console.log("speding",response)
    },
  },
  reducers:{

  }
}

components层:

index.js

componentDidMount() {
    const { dispatch } = this.props;
    console.log("componentDidMount............")
     dispatch({
       type: 'spending/fetchData',
     });
    console.log("componentDidMount............end")
  }

非原创,摘自简书,留作笔记自己用

相关文章

网友评论

      本文标题:axios 在dva中的使用

      本文链接:https://www.haomeiwen.com/subject/bitbxhtx.html