React Dva项目 Model中编写与调用异步函数

news2024/11/17 23:55:38

上文 React Dva项目中模仿网络请求数据方法 中,我们用项目方法模拟了后端请求的数据
那么 今天我们就在models中尝试去使用一下这种异步获取数据的方法
之前 我们在文章 React Dva项目创建Model,并演示数据管理与函数调用 中已经接触过Model了
也可以理解为 它就是 Dva中的 redux
这里 我们在自己的Dva项目中 找到根目录下的 mock 下面创建filmData.js
参考代码如下

module.exports = {
    "GET /api/filmDataList":(req,res)=>{
        const para = req.query;
        console.log(para);
        res.send({
            state: 200,
            message: "请求成功",
            data: [
                {
                    name: "午夜凶铃",
                    describe: "《午夜凶铃》是日本地区最知名的恐怖片之一,影片主导演是中田秀夫。本部影片在1998年的1月31日正式在日本地区上映,影片的内容主要改编于由小说家铃木光司所写的同名小说。"
                },
                {
                    name: "咒怨",
                    describe: "《咒怨》是日本地区的恐怖系列影视作品之一,内容主要讲述了有怨气的人在死后会在之前所居住的地方长期停留,进入到这些地方的人都会受到诅咒。本部影片上映的时间是2003年的1月25日。"
                },
                {
                    name: "死寂",
                    describe: "《死寂》上映于2007年的3月16日,是由温子仁作为总导演创作的一部恐怖电影。"
                }
            ]
        })
    }
}

这个地方 我们上文也讲过 就是模仿接口放回的数据
这里 我们新用了一个 res 并输出了req.query
这是外面传进来的请求参数 我们输出看一下

然后 根目录下找到 .roadhogrc.mock.js
编写代码如下

import fs from 'fs';
import path from 'path';
const mock = {}
fs.readdirSync(path.join(__dirname, 'mock')).forEach(function (file) {
    if (file.match(/\.js$/)) {
        Object.assign(mock, require('./mock/'+ file))
    }
})
export default mock;

用读流的方式 将mock下所有的js文件读进来
包括我们刚刚写的filmData.js

然后在根目录找到src下的 services 下面的example.js定义一个函数 来调用我们写给filmData.js的/api/filmDataList接口
在这里插入图片描述
这里小改动 接收一个data对象参数 然后 用data里面的id 来做id路径参数 发送get请求
这样 我们的基础就打好啦

然后我们 在根目录下的src下的 models 创建一个文件 叫 AsynchSchedul.js
编写代码如下

import * as api from "../services/example";

export default {

    namespace: 'AsynchSchedul',
  
    state: {},

    effects: {
        *getAsynchSchedulList({ payload }, { call, put }) {  // eslint-disable-line
            const dataList = yield call(api.getFilmData,payload);
            yield put({
                type: 'save',
                payload: dataList.data
            });
            return dataList.data
        },
    },
}

我们先是引入了…/services/example中全部的东西 定义代理名叫api
然后 effects中写异步函数 这里 我们定义了一个getAsynchSchedulList
yield 调用 然后call中两个参数 一个是我们要调用的异步函数 刚刚引入的api下的getFilmData payload就是其他地方调用getAsynchSchedulList需要传的参数
最后将 dataList.data 返回回去
然后 记得改一下src下的index.js
去调用我们的AsynchSchedul
在这里插入图片描述
然后 我们找一个组件 编写代码如下

import React from "react";
import { connect } from "react-redux";

class Product extends React.Component {
  constructor(props) {
    super(props);
    this.state = {}
  }

  getlistmin = () => {
    this.props.dispatch({
      type: "AsynchSchedul/getAsynchSchedulList",
      payload: {
        id: 123
      }
    }).then(res => {
      console.log(res);
    })
  }

  render() {
    return (
      <div>
        <button onClick={this.getlistmin}>HTTP请求</button>
      </div>
    )
  }
}

export default connect()(Product);

这样 当我们点击时 结果就输出了
在这里插入图片描述
但是细心的同学会发现 filmData.js中的

const para = req.query;
console.log(para);

没有输出啊
别急 在控制台呢
在这里插入图片描述
id值 和我们之前调用时传的就是一样的
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/826879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

火爆全网,Fiddler手机抓包-接口测试辅助实战(最全总结)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Fiddler是一款安装…

【PostgreSQL】系列之 一 用户创建和授权(三)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…

新手入门Jenkins自动化部署入门详细教程

1. 背景 在实际开发中&#xff0c;我们经常要一边开发一边测试&#xff0c;当然这里说的测试并不是程序员对自己代码的单元测试&#xff0c;而是同组程序员将代码提交后&#xff0c;由测试人员测试&#xff1b; 或者前后端分离后&#xff0c;经常会修改接口&#xff0c;然后重新…

使用Netty库:关闭或者调整在控制台输出的日志

问题现象 今天使用Netty库&#xff0c;一运行&#xff0c;在控制台输出了很多debug级别的日志&#xff0c;把我主要的输出信息都掩盖了&#xff1a; 程序代码&#xff1a; package com.thb;import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; impor…

[openCV]基于拟合中线的智能车巡线方案V2

import cv2 as cv import os import numpy as np# 遍历文件夹函数 def getFileList(dir, Filelist, extNone):"""获取文件夹及其子文件夹中文件列表输入 dir&#xff1a;文件夹根目录输入 ext: 扩展名返回&#xff1a; 文件路径列表"""newDir d…

VMware虚拟机安装Linux教程(超详细)

一、安装 VMware 官方正版VMware下载&#xff08;16 pro&#xff09;&#xff1a;https://www.aliyundrive.com/drive/file/backup/64c9fa3c132e0d42c60d489c99f3f951ef112ad5 下载Linux系统镜像&#xff08;阿里云盘不限速&#xff09;&#xff1a;https://www.aliyundrive.c…

【C#学习笔记】值类型(2)

文章目录 Struct结构体类型为什么不推荐struct 元组类型可为空的值类型从可为空的值类型转换为基础类型提升的运算符如何确定可为空的值类型为什么建议少用T?装箱和取消装箱 Struct结构体类型 结构类型&#xff08;“structure type”或“struct type”&#xff09;是一种可封…

为Stable Diffusion web UI开发自己的插件实战

最近&#xff0c;Stable Diffusion AI绘画受到了广泛的关注和热捧。它的Web UI提供了了一系列强大的功能&#xff0c;其中特别值得一提的是对插件的支持&#xff0c;尤其是Controlnet插件的加持&#xff0c;让它的受欢迎程度不断攀升。那么&#xff0c;如果你有出色的创意&…

【Linux命令200例】touch用来创建新的文件或者修改已有文件

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜…

Linux下.py文件只读问题以及解决过程

一、问题描述 如图&#xff0c;在Ubuntu Linux系统中使用pycharm管理项目文件时&#xff0c;无法编辑&#xff0c;提示文件为只读&#xff1a; 点击"OK"后仍旧无法清除只读模式&#xff0c;并报错&#xff1a; 二、问题解决 将问题定性为文件权限相关问题&#…

谁说配置难?这篇文章让你轻松掌握xilinx 7系列FPGA配置技巧

本文旨在通过讲解不同模式的原理图连接方式&#xff0c;进而配置用到引脚的含义(手册上相关引脚含义有四、五页&#xff0c;通过本文理解基本上能够记住所有引脚含义以及使用场景)&#xff0c;熟悉xilinx 7系列配置流程&#xff0c;以及设计原理图时需要注意的一些事项&#xf…

什么是SaaS?国内做得好的saas平台有哪些啊?

SaaS是Software as a Service的缩写&#xff0c;意为软件即服务。 它是指将软件应用程序部署在云计算服务器上&#xff0c;通过网络提供给用户的一种模式。 这个模式下&#xff0c;用户无需花费大量的资金购买和维护软件应用程序&#xff0c;只需要按需订阅使用。SaaS通常以订…

blender 毛发粒子

新建平面&#xff0c;点击右侧粒子系统&#xff0c;选择毛发&#xff0c;调整毛发长度&#xff0c;数量&#xff08;Number&#xff09;&#xff0c;调整数量是为了避免电脑卡顿&#xff1b; 上面设置的每一根柱子都可以变成一个物体&#xff0c;点击渲染&#xff0c;渲染为选…

Flink之JDBC Sink

这里介绍一下Flink Sink中jdbc sink的使用方法,以mysql为例 代码 import org.apache.flink.connector.jdbc.JdbcConnectionOptions; import org.apache.flink.connector.jdbc.JdbcExecutionOptions; import org.apache.flink.connector.jdbc.JdbcSink; import org.apache.fli…

027 - avg()函数

定义&#xff1a; AVG 函数返回数值列的平均值。NULL 值不包括在计算中。 语法&#xff1a; SELECT AVG(column_name) FROM table_name -- 实际操作&#xff08;计算salary的平均值&#xff09;&#xff1a; SELECT avg(salary) AS "平均工资" FROM employee ; --…

300行代码实现简易Spring框架

源码地址 该简易Spring框架实现的功能有 容器启动包扫描单例、多例BeanBean的创建依赖注入Aware回调函数初始化后处理器AOP 目录结构如下&#xff0c;service包为模拟业务逻辑&#xff0c;spring包为spring的实现&#xff08;核心&#xff09;&#xff0c;其中ApplicationCo…

MySQL数据库中.frm和.myi和.myd和.ibd文件是什么文件?

mysql 数据库 存储引擎是myisam, 在data目录下会看到3类文件&#xff1a;.frm、.myi、.myd &#xff08;1&#xff09;.frm–表定义&#xff0c;是描述表结构的文件。 &#xff08;2&#xff09;.MYD–"D"数据信息文件&#xff0c;是表的数据文件。 &#xff08;3&am…

mfc程序发布时带上必要的dll

mfc在开发机器上&#xff0c;运行时没问题的&#xff0c; 但如果到其他windows机器运行会报错&#xff0c;提示几个dll库文件找不到 如何处理&#xff1f; 不要慌&#xff0c;问题不大&#xff0c;不要盲目去下载dll&#xff0c;或到c盘windows下找&#xff0c; 完全没必要…

浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用

视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期&#xff0c;电视技术的发明和普及促进了视频技术的进一步发展。 1&#xff09;数字化&#xff1a;数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽&#xff0c;可以更快地…