react-thunk

869 阅读1分钟

概念

redux-thunk是一个redux的中间件,用来出来redux中的复杂逻辑,比如异步请求

redux-thunk中间件可以让action创建函数不仅仅返回一个action对象,也可以是返回一个函数

使用

安装:npm install redux-thunk --save


步骤1:
import {createStore,applyMiddleware} from 'redux';
import reducer from './reducer';
import thunk from "redux-thunk";
步骤2:
const store = createStore(reducer,applyMiddleware(thunk),window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());
export default store;

redux-dev-tools和redux-thunk兼容

安装插件

下载地址:https://github.com/zalmoxisus/redux-devtools-extension

import {createStore,applyMiddleware,compose} from 'redux';
import reducer from './reducer';
import thunk from "redux-thunk";
/*不使用redux-thunk*/
// const store = createStore(reducer,window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());/*使用redux-thunk*/
// const store = createStore(reducer,applyMiddleware(thunk),window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());
//redux-dev-tools和redux-thunk兼容
const composeEnhancers =    window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?       
 window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) : compose;
const enhancer = composeEnhancers(    applyMiddleware(thunk),);
const store = createStore(reducer,enhancer);
export default store;

action具体实现

export const initListAction = () => {    
  return (dispatch) => {        
     http.get("/api/shop", {}, (data) => {            
     const list = data.data.list;            
     if (data.responeStatus === "0") {                
         store.dispatch({                    
             type:INIT_LIST_ITEM,                    
             list               
         });            
      }        
  })    
}};