React-使用Redux-thunk中间件实现ajax数据请求
action在到达store之前会经历一个中间件层,利用redux中间件机制,可以在action响应之前执行其他额外的业务逻辑。中间件指的是是action 与store的中间,是redux的中间件。
1.先安装
npm install redux-thunk --save
2.在index.js里创建store时配置redux-thunk。
要想使用中间件,需要在创建store的index.js文件里,引入applyMiddleware,照着官方的文档一步一步配置,使得store既使用了redux-thunk这个中间件,又使用了redux-doctools这个开发者工具。这样在action来的时候,会经过这些中间件,从而做额外的操作。
index.js:
import { createStore, applyMiddleware ,compose} from 'redux';
import reducer from './reducer'
import thunk from 'redux-thunk'
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) : compose;
const store=createStore(reducer,composeEnhancers(applyMiddleware(thunk)));
export default store;
3.在actionCreators.js的action 里写异步的代码
因为有了thunk这个中间件,所以action可以是一个函数,这个函数有2个参数是dispatch、getState。store发现action 是一个函数,会自动执行这个函数。
actionCreators.js
import * as actionTypes from './actionTypes';
import{ fromJS } from 'immutable'
import axios from 'axios';
export const searchFocusAction=()=>({
type:actionTypes.SEARCH_FOCUS
});
export const searchBlurAction=()=>({
type:actionTypes.SEARCH_BLUR
});
export const listInitAction=(data)=>({
type:actionTypes.LIST_INIT,
data:fromJS(data)
});
export const getList=()=>{
//action可以是一个函数,有dispatch参数
return (dispatch)=>{
axios.get('/api/headerList.json').then((res)=>{
const data=res.data;
dispatch(listInitAction(data.data))
}).catch(()=>{
console.log('error');
});
}
};
React-使用Redux-thunk中间件实现ajax数据请求的更多相关文章
- Ajax --- 数据请求
下面主要介绍(JS原生)数据请求的主要步骤: Ajax 数据请求步骤: 1.创建XMLHttpRequest对象 2.准备数据发送 3.执行发送 4.指定回掉函数 第一步:创建XMLHttpReque ...
- VueJS搭建简单后台管理系统框架 (二) 模拟Ajax数据请求
开发过程中,免不了需要前台与后台的交互,大部分的交互都是通过Ajax请求来完成,在服务端未完成开发时,前端需要有一个可以模拟Ajax请求的服务器. 在NodeJs环境下,通过配置express可访问的 ...
- ajax数据请求5(php格式)
ajax数据请求5(php格式): <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- ajax数据请求4(xml格式)
ajax数据请求4(xml格式): <!doctype html> <html> <head> <meta charset="utf-8" ...
- ajax数据请求3(数组json格式)
ajax数据请求3(数组json格式) <!doctype html> <html> <head> <meta charset="utf-8&quo ...
- ajax数据请求2(json格式)
ajax数据请求2(json格式) <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- AJAX数据请求
ajax数据请求需要四个步骤:(请求文本内容) 1.创建XMLHttpRequest对象: 2.打开与服务起的链接: 3.发送给服务器: 4.响应就绪. <!DOCTYPE html> & ...
- 微信小程序的ajax数据请求wx.request
微信小程序的ajax数据请求,很多同学找不到api在哪个位置,这里单独把小程序的ajax请求给列出来,微信小程序的请求就是wx.request这个api,wx.request(一些对象参数),微信小程 ...
- Redux thunk中间件
redux-thunk https://github.com/reduxjs/redux-thunk Why Do I Need This? Thunks are the recommended mi ...
随机推荐
- 基于angular2x+ng-bootstrap构建后台管理系统界面
写在前面的话 近来公司要做一个后台管理系统,人手比较少,于是作为一个前端也参与进来,其实据我所知,大部分的公司还是后台自己捣鼓的. 在后台没有到位的情况下,前端应该使用什么技术也着实让我为难了一把.经 ...
- Stackoverflow 珠玑:用于分组的 LINQ 扩展方法
从 stackoverflow.com 上抄来的,将 IEnumerable 中的元素进行切分的方法,无动态内存分配,地球上最快的实现: public static class LinqExtensi ...
- NopCommerce 根据手机浏览器和桌面浏览器切换 Theme
自从 NopCommerce 升级到 3.x 以来,默认的 ViewName.Mobile.cshtml 方式就被响应式的默认 Theme 取代了. 但是在今天各种手机专用前端库大行其道的情况下,响应 ...
- TensorFlow实现Softmax回归(模型存储与加载)
# -*- coding: utf-8 -*- """ Created on Thu Oct 18 18:02:26 2018 @author: zhen "& ...
- csdn中使用git的一些注意事项---免得走弯路
csdn中使用git必须的条件(windows系统下): 1.本机当前登录用户文件夹下必须有.ssh隐藏文件,并且这个文件中必须有用git bash中用命令生成的密钥文件:id_rsa id_rsa ...
- 洗礼灵魂,修炼python(27)--异常处理(1)—>了解异常
python学到这,其实你应该是在入门到进阶的中间阶段了,但是还没有到进阶的阶段的,这是肯定的,因为进阶得可以从实际问题中解决问题的,比如写一个自动化的爬虫程序啊,对一件事物作大数据归纳分析,开发一个 ...
- 华硕200系主板完美兼容M.2安装Win7系统
虽然Windows 10系统的装机率正不断攀升,但经典的Windows 7依然有着大量的用户群体.特别是在我们中国, Windows 7依然是许许多多电脑用户的装机首选系统. 经久不衰的Windows ...
- ccf--20160403---路径解析
本题思路如下: 具体的细节如下:首先去掉字符串中重复出现的/,然后遇到..,就删除栈的最后一个元素,.忽略 下面是代码和题目: 问题描述 试题编号: 201604-3 试题名称: 路径解析 时间限制: ...
- mybatis使用<choose> <when>
一.需求 后台使用orcale数据库,mybatis做持久层,前台搜索功能,根据类型搜索,但是数据库中没有类型字段, 所以需要在where条件语句中进行判断,当type == x1 时和type == ...
- JdbcTemolate类的介绍<一>
JdbcTemolate类的介绍 JdbcTemplate是Spring JDBC的核心类,封装了常见的JDBC的用法,同时尽量避免常见的错误.该类简化JDBC的操作,我们只需要书写提供SQL的代码和 ...