博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React-使用Redux-thunk中间件实现ajax数据请求
阅读量:5108 次
发布时间:2019-06-13

本文共 1527 字,大约阅读时间需要 5 分钟。

  把异步函数放在生命周期函数里写,生命周期函数会变得越来越复杂,组件会变得越来越大。Redux默认只处理同步,借助redux-thunk ,可以把异步请求放在actionCreators.js里管理,而且有利于自动化测试。中间件指的是是action 与store的中间,是redux的中间件。

1.先安装

npm install redux-thunk --save

2.在index.js里创建store时配置redux-thunk。

  要想使用中间件,需要在创建store的index.js文件里,引入applyMiddleware,照着官方的文档一步一步配置,使得store既使用了redux-thunk这个中间件,又使用了redux-doctools这个开发者工具。

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可以是一个函数,这个函数有个参数是dispatch。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');        });    }    };

 

转载于:https://www.cnblogs.com/superlizhao/p/9437166.html

你可能感兴趣的文章
Oracle中的rownum不能使用大于>的问题
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
遍历Map对象
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
SDN第四次作业
查看>>
DM8168 DVRRDK软件框架研究
查看>>
django迁移数据库错误
查看>>
yii 跳转页面
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>