一、redux-thunk介紹
redux-thunk用于處理異步action夜畴,同類型的有redux-saga
二、學習網址
https://github.com/reduxjs/redux-thunk github
三、安裝與引入
npm install --save react-redux
安裝
import thunk from 'redux-thunk'
引入
三毯侦、如何使用redux-thunk
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
// 創(chuàng)建store的時候洒缀,第二個參數是中間件瑰谜,redux-thunk提供了一個thunk中間件,用于處理異步的action
export default createStore(
rootReducer,
applyMiddleware(thunk)
);
//異步的action, 由于使用了redux-thunk的thunk中間件树绩,
//所以萨脑,在這個action里不用像同步action那樣,必須返回一個對象饺饭,在這里返回一個方法
//這個方法有一個dispatch的參數渤早,這個dispatch就是store里的dispatch.
export const addAsync = (num = 1) => {
return (dispatch) => {
// 當這個方法剛進來的時候,就馬上告訴reducer瘫俊,我要開始獲取數據了鹊杖,
// reducer接收到這個動作,就會執(zhí)行相應的操作(把isLoading改為true,看reducer里的代碼)
dispatch({
type: START_GET_DATA
});
// 用setTimeout來模擬獲取數據
setTimeout(() => {
// 獲取數據完成之后扛芽,需要dispatch兩個action.
// 一個是把獲取到的數據骂蓖,傳到一個動作里(ADD)
dispatch({
type: ADD,
num
});
// 這個是用來告訴reducer,我獲取數據成功了川尖。reducer接收到這個動作登下,
// 就會執(zhí)行相應的操作(把isLoading改為false,看reducer里的代碼)
dispatch({
type: GET_DATA_SUCCESS
});
}, 2000)
}
}