国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關(guān)于 Redux 中間件

Ryan_Li / 1564人閱讀

摘要:的中間件是定義一個函數(shù),對進行改造,在發(fā)出與執(zhí)行之間添加其他功能。

Redux 的中間件是定義一個函數(shù),對 dispatch 進行改造,在發(fā)出 action 與執(zhí)行 reducer 之間添加其他功能。這是對 Redux 進行功能拓展的方式。

Redux 如何支持中間件?

applyMiddlewares()

export default function applyMiddleware(...middlewares) {
  return (createStore) => (reducer, preloadedState, enhancer) => {
    var store = createStore(reducer, preloadedState, enhancer);
    var dispatch = store.dispatch;
    var chain = [];
    var middlewareAPI = {
      getState: store.getState,
      dispatch: (action) => dispatch(action)
    };
    chain = middlewares.map(middleware => middleware(middlewareAPI));
    dispatch = compose(...chain)(store.dispatch);
    return {...store, dispatch}
  }
}

middleware => middleware(middlewareAPI)

每個 middleware 將能訪問 getStatedispatch,同時可以知道該 middleware 為高階函數(shù),執(zhí)行返回一個函數(shù)

compose()

dispatch = compose(...chain)(store.dispatch);

export default function compose(...funcs) {
  if (funcs.length === 0) {
    return arg => arg
  }

  if (funcs.length === 1) {
    return funcs[0]
  }

  const last = funcs[funcs.length - 1]
  const rest = funcs.slice(0, -1)
  return (...args) => rest.reduceRight((composed, f) => f(composed), last(...args))
}

(composed, f) => f(composed)
即:
middleware({getState, dispatch})(store.dispatch)
該函數(shù)為高階函數(shù),執(zhí)行返回一個函數(shù)

分析至此,一個 middleware 函數(shù)大致為:

({getState, dispatch})=> (next) => (action) => {
    // next 即 store.dispatch
    //...在此拓展功能
    action() // action, 這個action執(zhí)行觸發(fā)dispath??
 } 
Action 如何與Dispatch聯(lián)系起來?

action 通過 bindActionCreatordispatch 聯(lián)系起來

bindActionCreator()

function bindActionCreator(actionCreator, dispatch) {
  return (...args) => dispatch(actionCreator(...args))
}

(...args) => dispatch(actionCreator(...args))

actionCreator 可以知道 actionCreator 為高階函數(shù),執(zhí)行返回一個函數(shù)

所以一個 action 的姿勢應(yīng)該為:

()=> () => {
   type: "",
   payload
}
舉例:redux-thunk 中間件

源碼:

function thunkMiddleware({ dispatch, getState }) {
  return next => action =>
    typeof action === "function" ?
      action(dispatch, getState) :
      next(action);
}

action 怎么寫?

funciton fetchSomething(){
    return (dispatch, getState)=>{
        fetch().then((res)=>{  
            disatch({
                type: "FETCH_SOMETHING_DONE"
                palyload
            })
        })
    }
}
參考:

Redux Middleware Doc

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/81266.html

相關(guān)文章

  • Redux story-1:who creates it?

    摘要:而不是卷入無休止的撕逼,用了某某而產(chǎn)生的優(yōu)越,甚至借貶低他人來抬高自己。 前言 ?這是一個系列文章,旨在分享在react及相關(guān)技術(shù)棧實踐過程中的個人感悟,心得。如果有不好的地方,歡迎各位批評指正。 ?由于對react本身還未深入了解,今天我們先來談一談redux相關(guān)的問題。 Who creates it? ?Dan Abramov是redux的作者,同時,他也是Create React...

    lavor 評論0 收藏0
  • React Redux 間件思想遇見 Web Worker 的靈感(附demo)

    摘要:寫在最前原文首發(fā)于作者的知乎專欄中間件思想遇見的靈感附,感興趣的同學(xué)可以知乎關(guān)注,進行交流。其中,最重要的一個便是對多線程的支持。在中提出了工作線程的概念,并且規(guī)范出的三大主要特征能夠長時間運行響應(yīng)理想的啟動性能以及理想的內(nèi)存消耗。 寫在最前 原文首發(fā)于作者的知乎專欄:React Redux 中間件思想遇見 Web Worker 的靈感(附demo),感興趣的同學(xué)可以知乎關(guān)注,進行交流...

    whatsns 評論0 收藏0
  • redux源碼解讀--applyMiddleware源碼解析

    摘要:的中間件主要是通過模塊實現(xiàn)的。返回的也是一個對象這個其實就是,各個中間件的最底層第三層的哪個函數(shù)組成的圓環(huán)函數(shù)構(gòu)成的這就是對源碼的一個整體解讀,水平有限,歡迎拍磚。后續(xù)的源碼解讀和測試例子可以關(guān)注源碼解讀倉庫 applyMiddleware源碼解析 中間件機制在redux中是強大且便捷的,利用redux的中間件我們能夠?qū)崿F(xiàn)日志記錄,異步調(diào)用等多種十分實用的功能。redux的中間件主要是...

    Atom 評論0 收藏0
  • React 項目中Redux 間件的理解

    摘要:如果想學(xué)習(xí)項目的底層建設(shè),建議先去學(xué)習(xí)官網(wǎng)案例,之后在學(xué)習(xí)的使用中間件介紹目的是提供第三方插件的模式,改變的過程。 前言 React/Redux項目結(jié)束后,當(dāng)我在研究react-router源碼的時候發(fā)現(xiàn)當(dāng)中有一部分含中間件的思想,所以才想把中間件重新梳理一遍;在之前看redux了解到中間件,redux層面中間件的理解對項目前期比較有幫助,雖然項目中后期基本可以忽略這層概念;現(xiàn)在對這部...

    amc 評論0 收藏0
  • Redux:Middleware你咋就這么難

    摘要:接下來的函數(shù)就有點難度了,讓我們一行一行來看。上面實際的含義就是將數(shù)組每一個執(zhí)行的返回值保存的數(shù)組中。需要注意的是,方法返回值并不是數(shù)組,而是形如初始值的經(jīng)過疊加處理后的操作。從而實現(xiàn)異步的。   這段時間都在學(xué)習(xí)Redux,感覺對我來說初學(xué)難度很大,中文官方文檔讀了好多遍才大概有點入門的感覺,小小地總結(jié)一下,首先可以看一下Redux的基本流程:showImg(https://segm...

    superPershing 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<