• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    redux中間件之redux-thunk的具體使用

    來源:懂視網 責編:小采 時間:2020-11-27 22:16:43
    文檔

    redux中間件之redux-thunk的具體使用

    redux中間件之redux-thunk的具體使用:redux的核心概念其實很簡單:將需要修改的state都存入到store里,發起一個action用來描述發生了什么,用reducers描述action如何改變state tree 。創建store的時候需要傳入reducer,真正能改變store中數據的是store.dispatch API。 1
    推薦度:
    導讀redux中間件之redux-thunk的具體使用:redux的核心概念其實很簡單:將需要修改的state都存入到store里,發起一個action用來描述發生了什么,用reducers描述action如何改變state tree 。創建store的時候需要傳入reducer,真正能改變store中數據的是store.dispatch API。 1

    redux的核心概念其實很簡單:將需要修改的state都存入到store里,發起一個action用來描述發生了什么,用reducers描述action如何改變state tree 。創建store的時候需要傳入reducer,真正能改變store中數據的是store.dispatch API。

    1.概念

    dispatch一個action之后,到達reducer之前,進行一些額外的操作,就需要用到middleware。你可以利用 Redux middleware 來進行日志記錄、創建崩潰報告、調用異步接口或者路由等等。
    換言之,中間件都是對store.dispatch()的增強

    2.中間件的用法

    import { applyMiddleware, createStore } from 'redux';
    import thunk from 'redux-thunk';
    
    const store = createStore(
     reducers, 
     applyMiddleware(thunk)
    );
    
    

    直接將thunk中間件引入,放在applyMiddleware方法之中,傳入createStore方法,就完成了store.dispatch()的功能增強。即可以在reducer中進行一些異步的操作。

    3.applyMiddleware()

    其實applyMiddleware就是Redux的一個原生方法,將所有中間件組成一個數組,依次執行。

    中間件多了可以當做參數依次傳進去

    const store = createStore(
     reducers, 
     applyMiddleware(thunk, logger)
    );
    

    如果想了解它的演化過程可以去redux的官方文檔:https://redux.js.org/advanced/middleware

    4.redux-thunk

    分析redux-thunk的源碼node_modules/redux-thunk/src/index.js

    function createThunkMiddleware(extraArgument) {
     return ({ dispatch, getState }) => next => action => {
     if (typeof action === 'function') {
     return action(dispatch, getState, extraArgument);
     }
    
     return next(action);
     };
    }
    
    const thunk = createThunkMiddleware();
    thunk.withExtraArgument = createThunkMiddleware;
    
    export default thunk;
    
    

    redux-thunk中間件export default的就是createThunkMiddleware()過的thunk,再看createThunkMiddleware這個函數,返回的是一個柯里化過的函數。我們再翻譯成ES5的代碼容易看一點,

    function createThunkMiddleware(extraArgument) {
     return function({ dispatch, getState }) {
     return function(next){
     return function(action){
     if (typeof action === 'function') {
     return action(dispatch, getState, extraArgument);
     }
    
     return next(action);
     };
     }
     }
    }
    
    

    這么一看,就可以看出來redux-thunk最重要的思想,就是可以接受一個返回函數的action creator。如果這個action creator 返回的是一個函數,就執行它,如果不是,就按照原來的next(action)執行。

    正因為這個action creator可以返回一個函數,那么就可以在這個函數中執行一些異步的操作。

    例如:

    export function addCount() {
     return {type: ADD_COUNT}
    }
    
    export function addCountAsync() {
     return dispatch => {
     setTimeout( () => {
     dispatch(addCount())
     },2000)
     }
    }
    
    

    addCountAsync函數就返回了一個函數,將dispatch作為函數的第一個參數傳遞進去,在函數內進行異步操作就可以了。

    參考文檔:http://www.redux.org.cn/docs/advanced/Middleware.html

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    redux中間件之redux-thunk的具體使用

    redux中間件之redux-thunk的具體使用:redux的核心概念其實很簡單:將需要修改的state都存入到store里,發起一個action用來描述發生了什么,用reducers描述action如何改變state tree 。創建store的時候需要傳入reducer,真正能改變store中數據的是store.dispatch API。 1
    推薦度:
    標簽: 中間件 red redux
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 成人国内精品久久久久影院VR| 国精品无码一区二区三区在线| 亚洲国产精品无码久久久秋霞2| 欧美精品在线一区二区三区| 国产观看精品一区二区三区| 久久露脸国产精品| 亚洲中文久久精品无码| 柠檬福利精品视频导航| 99精品国产一区二区| 亚洲一级Av无码毛片久久精品| 国产精品男男视频一区二区三区| 嫩草影院久久国产精品| 日韩欧美一区二区三区中文精品 | 99热门精品一区二区三区无码| 亚洲精品乱码久久久久久按摩 | 国产精品揄拍100视频| 97精品国产97久久久久久免费| 久久久久四虎国产精品| 欧美精品免费专区在线观看| 精品一区二区三区在线成人| 欧美精品第欧美第12页| 亚洲精品国产V片在线观看| 精品一区二区三区中文字幕| 四虎影院国产精品| 精品在线免费观看| 日韩一区二区三区精品| 久久亚洲国产精品123区| 精品少妇人妻av无码久久| 精品国产黑色丝袜高跟鞋| 国产精品禁18久久久夂久| 久夜色精品国产一区二区三区 | 久久久久久亚洲精品无码| 无码aⅴ精品一区二区三区浪潮| 久久精品国产亚洲av影院| 国内精品久久久久久久coent| 久久97久久97精品免视看| 国产精品后入内射日本在线观看 | 国产麻豆精品入口在线观看 | 国产乱人伦偷精品视频AAA | 99久久精品国内| 无码精品人妻一区|