react-redux--異步Action

上兩篇文章敘述的都是同步操作,每當 dispatch action 時猖任,state 會被立即更新你稚。但是實際應用中,我們有很多操作執(zhí)行后朱躺,過一段時間刁赖,才會得到結果。那么怎么處理這種情況呢长搀?

先熟悉一個概念
中間件


本質就是一個通用函數(shù)宇弛,可以在程序的任何執(zhí)行處介入,從而將處理方法擴展到現(xiàn)有系統(tǒng)上源请。

在store.dispatch(action) 執(zhí)行時候枪芒,打印日志彻况,這就是一個簡單的中間件
let next = store.dispatch;
store.dispatch = action => {
  next(action);
  console.log('state after dispatch', getState())
}

引入中間件 redux-thunk

redux-thunk中間件,允許action creator返回一個函數(shù),這個函數(shù)會接收dispath和getState舅踪?為參數(shù)纽甘。

看下面三種不同的action
const INCREMENT_COUNTER = 'INCREMENT_COUNTER';

普通的,返回一個對象
function increment() {
  return {
    type: INCREMENT_COUNTER
  };
}

異步的,返回一個函數(shù)
function incrementAsync() {
  return dispatch => {
    setTimeout(() => {
      // Yay! Can invoke sync or async actions with `dispatch`
      dispatch(increment());
    }, 1000);
  };
}

帶條件的抽碌,返回一個函數(shù)
function incrementIfOdd() {
  return (dispatch, getState) => {
    const { counter } = getState();

    if (counter % 2 === 0) {
      return;
    }

    dispatch(increment());
  };
}

使用中間件 redux-thunk

需求:
進入頁面之后贷腕,點擊某個按鈕,獲取用戶投資總額咬展。泽裳。。

分析:
異步請求有3個關鍵action

  • 開始請求--一般用于呈現(xiàn)加載進度條
  • 請求成功--關閉進度條破婆,加載數(shù)據(jù)
  • 請求失敗--關閉進度條涮总,展示錯誤信息
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk'; //導入thunk
import rootReducer from './reducers/index';

// Note: this API requires redux@>=3.1.0
const store = createStore(
  rootReducer,
  applyMiddleware(thunk)//激活thunk中間件
);

//一個異步請求
function fetchAmount() {
  return fetch('https://www.renrendai.com/getAmount?userId=123')
}
//通知 reducer 請求開始的 action
requestPost(){
    return{
        type: REQUEST_POSTS,
        isFetch:true //進度條相關
    }
}

//通知 reducer 請求成功的 action
receviePostOnSuccess( data){
    return{
         type: RECEIVE_POSTS,
         isFetch:false,
         amount: data.amount
     }
}
//通知 reducer 請求失敗的 action。
receviePostOnError( message){
  return{
     type: RECEIVE_POSTS,
     isFetch:false,
     errorMsg:message
  }
}


//異步請求action 【將上面3個基礎的action整合】
function getAmount(){
    retrun (dispath)=>{
    // 首次 dispatch:更新應用的 state 來通知API 請求發(fā)起了
    dispatch(requestPosts())
    //異步請求后端接口
        return fetchAmount().then(
             data=>dispath(receviePostOnSuccess(data)),
             error=> dispatch(receviePostOnError('error))
        )
    }
}

也很容易理解吧~~~

本文檔是將最基礎的使用方法提煉呈現(xiàn)祷舀,真正的react-redux博大精深瀑梗,如果想繼續(xù)深究,就趕緊找一個簡單的項目開始練手吧裳扯。

參考文檔:

Redux 中文文檔

Redux

react-redux

Redux thunk

Redux異步操作redux-thunk

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末抛丽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饰豺,更是在濱河造成了極大的恐慌亿鲜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冤吨,死亡現(xiàn)場離奇詭異蒿柳,居然都是意外死亡,警方通過查閱死者的電腦和手機漩蟆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門垒探,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怠李,你說我怎么就攤上這事圾叼。” “怎么了捺癞?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵夷蚊,是天一觀的道長。 經(jīng)常有香客問我翘簇,道長撬码,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任版保,我火速辦了婚禮呜笑,結果婚禮上夫否,老公的妹妹穿的比我還像新娘。我一直安慰自己叫胁,他們只是感情好凰慈,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驼鹅,像睡著了一般微谓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上输钩,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天豺型,我揣著相機與錄音,去河邊找鬼买乃。 笑死姻氨,一個胖子當著我的面吹牛,可吹牛的內容都是我干的剪验。 我是一名探鬼主播肴焊,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼功戚!你這毒婦竟也來了娶眷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啸臀,失蹤者是張志新(化名)和其女友劉穎届宠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壳咕,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡席揽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谓厘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寸谜,死狀恐怖竟稳,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情熊痴,我是刑警寧澤他爸,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站果善,受9級特大地震影響诊笤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜巾陕,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一讨跟、第九天 我趴在偏房一處隱蔽的房頂上張望纪他。 院中可真熱鬧,春花似錦晾匠、人聲如沸茶袒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽薪寓。三九已至,卻和暖如春澜共,著一層夾襖步出監(jiān)牢的瞬間向叉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工嗦董, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留植康,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓展懈,卻偏偏與公主長得像销睁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子存崖,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容