16 react 发送异步请求获取数据 和 使用Redux-thunk中间件进行 ajax 请求发送
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 请求发送的更多相关文章
- 向.net后端发送请求获取数据,在前端动态填充表格
实现效果 实现步骤 通过Ajax请求的方式 1.在前端定义Table 2.通过Ajax向.net后端发送数据请求 3.在.net后端定义方法供前端调用,并返回所需的数据 4.通过构造字符串的方式,将后 ...
- ajax异步请求获取数据,实现滚动数字的效果。
BackgroundPositionAnimate.js下载 需要导入的js: <script type="text/javascript" src="js/jqu ...
- jQuery使用ajax跨域请求获取数据
jQuery使用ajax跨域请求获取数据 跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的 ...
- Salesforce LWC学习(十四) Continuation进行异步callout获取数据
本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.apex_continua ...
- 关于前端ajax请求获取数据成功之后无法操作数据的原因及解决方法
前言:做项目的时候我用ajax请求json数据,遍历使用数据时却发现页面无响应.关于这个问题今天有个朋友又问了我一次,记录一下.由于我没有记录,这里用我朋友的图片. 代码现象: 这里他是使用alert ...
- 总结:kathasis如何发送get请求获取数据
1.进入前端页面,找到对应的模块,开始塞字段数据. 2.如果字段为基本类型,如String,比如website,则在前段界面,右击,inspect,找到对应的代码所处的jsp,跳转到该jsp,通过该j ...
- uni-app如何解决在for循环里调用异步请求获取数据顺序混乱问题?
总结/朱季谦 先前有一次做uni-app的js接口对接时,遇到过这样的情况,在for循环里,调用一个异步请求时,返回来的值顺序是乱的,因此,在以下的代码里,push到数组里的值,每次的顺序可能都是不一 ...
- urllib模块通过post请求获取数据
功能: 输入你要查找的单词,会返回相对应的结果 import urllib.request import urllib.parse import json class youdaoSpider: de ...
- ios 异步多线程 获取数据
简介 iOS有三种多线程编程的技术,分别是: (一)NSThread (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch) 这三种编程方式 ...
随机推荐
- 使用Spring Cloud Gateway保护反应式微服务(二)
抽丝剥茧,细说架构那些事——[优锐课] 接着上篇文章:使用Spring Cloud Gateway保护反应式微服务(一) 我们继续~ 将Spring Cloud Gateway与反应式微服务一起使用 ...
- 1. GC标记-清除算法(Mark Sweep GC)
世界上第一个GC算法,由 JohnMcCarthy 在1960年发布. 标记-清除算法由标记阶段和清除阶段构成. 标记阶段就是把所有的活动对象都做上标记的阶段. 标记阶段就是"遍历对象并标记 ...
- 吴裕雄--天生自然JAVAIO操作学习笔记:RandomAccessFile
import java.io.File ; import java.io.RandomAccessFile ; public class RandomAccessFileDemo01{ // 所有的异 ...
- 【剑指Offer】面试题34. 二叉树中和为某一值的路径
题目 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / ...
- install正常,deploy上传jar失败致使打包失败
[INFO] Scanning for projects...[INFO] [INFO] ------------------------------------------------------- ...
- 富文本API
这个笔记来自网络资料的总结 简书大佬三省吾身_9862 tuobaye个人博客 富文本有相关3个API和一个新属性 var selection = window.getSelection(); var ...
- 查看Python安装目录 -- 一个命令
pip --version
- TP5分页函数paginate中的each()传参
在使用each()时,each()里面只能使用局部变量,当使用外部变量时会报未定义变量的错误,但是有时候我们还必须使用外部变量,就需要想是时作用域的问题,但是如果使用 global 全局虽然不报错,但 ...
- 038、Java中逻辑运算之非运算“!”
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- postman 请求get post方法的 区别
1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法. GET请求:请求指定的页面信息,并返回实体主体.(通常用 ...