<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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
        主站蜘蛛池模板: 蜜桃视频在线观看免费网址入口 | 女bbbbxxxx另类亚洲| 国产色在线|亚洲| 亚洲欧美日韩中文高清www777| 亚洲Av永久无码精品黑人| 国产做国产爱免费视频| 免费黄色网址网站| 国产亚洲人成网站观看| 日韩免费精品视频| 精品久久久久国产免费| 亚洲天堂2017无码中文| 亚洲AV永久无码精品网站在线观看 | 亚洲综合国产一区二区三区| 亚洲国产高清在线精品一区| 国产成人无码免费网站| 国产香蕉九九久久精品免费 | 亚洲中文字幕在线无码一区二区| 一级A毛片免费观看久久精品| 免费观看激色视频网站(性色)| 亚洲欧洲校园自拍都市| g0g0人体全免费高清大胆视频| 国产精品亚洲精品日韩已方| 亚洲中文字幕无码爆乳app| 9420免费高清在线视频| jizzjizz亚洲| 男人天堂2018亚洲男人天堂| 国产精品深夜福利免费观看| 亚洲成a人片7777| 午夜视频免费成人| 亚洲中文无码线在线观看| 91精品全国免费观看青青| 亚洲国产成人久久综合碰碰动漫3d| 大片免费观看92在线视频线视频| 国产成人A人亚洲精品无码| 精品熟女少妇aⅴ免费久久 | 久久免费精品视频| 日韩亚洲欧洲在线com91tv| 99久久精品日本一区二区免费| 久久久久亚洲精品日久生情| 无码精品国产一区二区三区免费| 亚洲国产精品无码久久久秋霞2|