欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dispatch callback ant design pro 网络请求回调函数

程序员文章站 2022-04-14 11:22:39
...

index.jsx

代码解析:在组件初次渲染时调用 model 中 命名空间为  a_models  的 getData 网络请求,传了一个patload 参数和 callback 回调函数过去,然后通过 this.setState ()更新视图的 state。

import { Form, Tabs,Affix, Button,Input,Table    } from 'antd';
import React, { Component } from 'react';
import {connect} from 'dva';
import classNames from 'classnames';

@connect(({ loading, a_models }) => ({
  a_models
}))
class Nwdayserver extends Component {
  
  // 设置默认的页面数据
  state = {
      dMsg:0,
      yMsg:0
  };

  // 页面初次渲染函数
  componentDidMount(){
    const { dispatch } = this.props;
    dispatch({
      //model的动作路径
      type:'a_models/getData',
      
      //传递给接口的数据
      payload:{
        test:1
      },
      callback:(res)=>{
        //得到网络请求的结果更新视图
        this.setState({
          ...res
        });

        console.log('e_models/s_list-网络请求得到的值:', res)
        console.log('e_models/s_list-view中设置的state的值', this.state)
        // console.log('e_models/s_list-Reducer --Action 处理器的值:', this.props.a_models)
      }
    });
  };

  render() {
    return (
      <div>{this.state.dMsg}</div>
    )
  }
}
export default Nwdayserver;

model a_models.js 代码:

import { getData } from '@/services/api';

const Model = {
  namespace: 'a_models',//唯一命名
  state: {
    visitData: 'visitData',
  },//model 的默认值
  effects: {
    *getData({ payload ,callback}, { call, put }) {
       const response = yield call(getData);
       if (callback && typeof callback === 'function') {
          callback(response)
       }
       console.log('执行了 model 中的 getData,response为',response)
        yield put({
          type: 'save',//type的value是在reducers中的函数名字
          payload: response,//response为接口返回对象
        });
     }
  },
  reducers: {
    save(state, { payload }) {
      return { ...state, ...payload};
    },
  },
};
export default Model;

service api.js文件代码

import { stringify } from 'qs';
import request from '@/utils/request';

export async function getData(params) {
  return {dMsg:110,yMsg:220};

  return request('https://jayjing.wan/11.php',{
    method: 'POST',
    data: {
      ...params,
      method: 'POST',
    },
  });
}

运行结果:

dispatch callback ant design pro 网络请求回调函数