1.发送异步请求获取数据

  1.引入 axios ( 使用 yarn add axios 进行安装 )

    import axios from 'axios';

  2. 模拟 在元素完成挂载后加载数据 并初始化 redux

    # TodoList.js

    componentDidMount(){

      axios.get('http://xxx/xxx').then( ( response ) => {

        const data = response.data;

        const action = {

          type: 'init_store_data',

          value: data

        }

        store.dispatch(action);

      })

    }

    # reducer.js

    export default (status, action)=>{

      if( action.type === 'init_store_data' ){

        const newState = JSON.parse(JSON.stringify( status ));

        newState.list = action.value ;

        return newState;

      }

    }

2. 使用Redux-thunk中间件进行 ajax 请求发送

  当 ajax请求很多 的时候 需要把 异步请求分装到其他地方进行管理

  此时就需要 使用 redux-thunk

  1. 安装 redux-thunk

    yarn add redux-thunk

  2.使用 redux-thunk

    创建 store 并使用 applyMiddleware 引入 redux-thunk 方法

    #store/index.js



      import {createStore, applyMiddleware, compose} from 'redux';

      import reducer from './reducer';

      import thunk from 'redux-thunk';

      // 校验 redux devtool 是否存在

      const composeEnhancers =

          window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?

          window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) : compose;

      // composeEnhancers 引入 thunk 中间件

      const enhancer = composeEnhancers(

        applyMiddleware(thunk)

      );

      // 合并后的中间件 作为 redux 的中间件

      const store = createStore(reducer, enhancer);

      export default store;

    #创建 action 文件夹 并在 action 文件夹下创建 index.js 并写入

      import axios from 'axios';

      export const loadInitData = ()=>{

      return (dispatch)=>{

          axios.get('http://index.com/front/article')

          .then((res)=>{

               const data = res.data.data.map((val)=>val.title);

                const action = {

                    type : 'init_data',

                    value : data

                }

                dispatch(action);

              })

         }

      }

    # store 下的 reducer.js 添加 类型判断      

      if(action.type === 'init_data'){

      const newState = JSON.parse(JSON.stringify(state))

      newState.list = action.value;

      return newState;

     }

    # TodoList.js 修改 componentDidMount

      import { loadInitData } from './action';

      componentDidMount(){

      const action = loadInitData();

      store.dispatch(action);

      }

    即可异步发送 ajax 请求

16 react 发送异步请求获取数据 和 使用Redux-thunk中间件进行 ajax 请求发送的更多相关文章

  1. 向.net后端发送请求获取数据,在前端动态填充表格

    实现效果 实现步骤 通过Ajax请求的方式 1.在前端定义Table 2.通过Ajax向.net后端发送数据请求 3.在.net后端定义方法供前端调用,并返回所需的数据 4.通过构造字符串的方式,将后 ...

  2. ajax异步请求获取数据,实现滚动数字的效果。

    BackgroundPositionAnimate.js下载 需要导入的js: <script type="text/javascript" src="js/jqu ...

  3. jQuery使用ajax跨域请求获取数据

    jQuery使用ajax跨域请求获取数据  跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的 ...

  4. Salesforce LWC学习(十四) Continuation进行异步callout获取数据

    本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.apex_continua ...

  5. 关于前端ajax请求获取数据成功之后无法操作数据的原因及解决方法

    前言:做项目的时候我用ajax请求json数据,遍历使用数据时却发现页面无响应.关于这个问题今天有个朋友又问了我一次,记录一下.由于我没有记录,这里用我朋友的图片. 代码现象: 这里他是使用alert ...

  6. 总结:kathasis如何发送get请求获取数据

    1.进入前端页面,找到对应的模块,开始塞字段数据. 2.如果字段为基本类型,如String,比如website,则在前段界面,右击,inspect,找到对应的代码所处的jsp,跳转到该jsp,通过该j ...

  7. uni-app如何解决在for循环里调用异步请求获取数据顺序混乱问题?

    总结/朱季谦 先前有一次做uni-app的js接口对接时,遇到过这样的情况,在for循环里,调用一个异步请求时,返回来的值顺序是乱的,因此,在以下的代码里,push到数组里的值,每次的顺序可能都是不一 ...

  8. urllib模块通过post请求获取数据

    功能: 输入你要查找的单词,会返回相对应的结果 import urllib.request import urllib.parse import json class youdaoSpider: de ...

  9. ios 异步多线程 获取数据

    简介 iOS有三种多线程编程的技术,分别是: (一)NSThread  (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch)   这三种编程方式 ...

随机推荐

  1. TeX 常用命令记录

    常用: $a_{i}^{2}$    a_{i}^{2} $\sqrt x$     $\sqrt[n] x$     \sqrt[n] x $\frac{1+2}{3+4}$ 重音符号: $\hat ...

  2. 一 Hibernate入门

    Hibernate环境搭建 Hibernate的API Hibernate的CRUD EE三层结构: web层 业务逻辑层 持久层         jdbc,DBUTils,Hibernate Hib ...

  3. 【pwnable.kr】 [simple login]

    Download : http://pwnable.kr/bin/login Running at : nc pwnable.kr 9003 先看看ida里面的逻辑. 比较重要的信息时input变量再 ...

  4. CRC校验算法详解

    CRC(Cyclic Redundancy Check)循环冗余校验是常用的数据校验方法,讲CRC算法的文章很多,之所以还要写这篇,是想换一个方法介绍CRC算法,希望能让大家更容易理解CRC算法. 先 ...

  5. 004.CI4框架CodeIgniter, 配置mysql数据库,并进行数据库查询

    01.在app的Config目录的Database文件里面填写数据库配置,并把pConnect设置成true,此处为一直连接mysql数据库 02.在Models中,创建一个System目录,再在Sy ...

  6. 006.Oracle数据库 , DISTINCT去掉重复项重复内容

    /*Oracle数据库查询日期在两者之间*/ SELECT DISTINCT OCCUR_DATE FROM LM_FAULT WHERE ( ( OCCUR_DATE >= to_date( ...

  7. python进行md5加密的两种方法

    本文转自:https://www.cnblogs.com/zknublx/p/6212590.html 一. 使用md5包 import md5 src = 'this is a md5 test.' ...

  8. JAVA 使用模板创建DOCX文档)(XDocService 使用报错条数过多报错链接不上服务器)

    详细解释https://xdoc.iteye.com/blog/2399451 https://xdoc.iteye.com/  导入 XDocService.jar   我说一下我遇到的问题 我从数 ...

  9. 吴裕雄--天生自然java开发常用类库学习笔记:Iterator接口

    import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class Iterat ...

  10. netty权威指南学习笔记五——分隔符和定长解码器的应用

    TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,通常采用以下4中方式: 消息长度固定,累计读取到长度综合为定长LEN的报文后,就认为读取到了一个完整的消息,将计数器置位,重新开始读取下一 ...