react学习笔记 (三) umi.js redux 异步(effects)请求接口

@[TOC](umi.js redux 异步(effects)请求接口 )
接上文react创建的三种方式, 重定义router 路由的两种方式

react版本 react@17.0.2 | MIT | deps: 2 | versions: 739 // npm info react
node版本 v16.4.2 // node -v
yarn版本 1.22.11 // yarn -version
dva版本 dva-cli version 0.10.1 // dva -v
nmi版本 ^2.9.0 // umi -v
react创建的三种方式: https://blog.csdn.net/lxw_hk2_zy/article/details/122297669
重定义router 路由的两种方式: https://blog.csdn.net/lxw_hk2_zy/article/details/122301216
umi.js redux 异步(effects)请求接口 https://blog.csdn.net/lxw_hk2_zy/article/details/122302297

1, 更改 .umirc.ts 文件

  plugins: [
    ['umi-plugin-react', {
      dva: {
        immer: true,
      }
    }]
  ]

在这里插入图片描述

文件夹目录

2, index.js

import React, { Component } from 'react';
import {Button} from 'antd';
import styles from './style.css';
import { connect } from "dva"; //从dva中导入connect

class TestTest extends Component {
  state = {
    text:""
  };
  componentDidMount() {
    // 调用接口
    this.referSend();
  };
  referSend = ()=>{
    const { dispatch } = this.props;
    this.setState({
      text:'正在发送请求...'
    })
    dispatch({
      type: 'testModel/findTestData',
      payload: {
      },
      callback: (res) => {
        this.setState({
          text:res.res
        })
      },
    });
  }
  render() {
    const { text } = this.state;
    return (
      <div>
        <Button >
          font : {text}
        </Button>

        <Button onClick={this.referSend}>
          重新发送请求
        </Button>
      </div>
    );
  }
};
const mapStateToProps = (state) =>{
  return {
      example:state.example, //这里的example表示后面用this.props.example获取state(根节点)中exmpale命名空间(model的example.js中的state所有数据)的数据
  }
}
export default connect (mapStateToProps)(TestTest) //通过这种方式来把model层的数据传递到当前组件了

3, model.js

这里用的假数据

import { findTestData } from "./service";
import { message } from 'antd';

export default {
  namespace: 'testModel',
  state: {
  },
  effects: {
    // 获取数据x
    * findTestData({ payload, callback }, { call, put }) {
        // const res = yield call(findTestData, payload);
        // res.status == 1 ? message.success(res.msg) : message.error(res.msg);
        // if(callback && res.status == 1) callback(res);
        
        callback({status:1,res:'从接口中取到的数据'})
    },
  },
  reducers: {
  },
};

4, service.js

import axios from 'axios';

// 获取数据
export async function findTestData(params) {
  return await axios.post('/test/findTestData', params).then((response) => {
    return response.data.result;
  }).catch(err => console.error(err));
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值