<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Redux 續(xù)集 | 如何搞定其中的異步操作?

          共 1225字,需瀏覽 3分鐘

           ·

          2021-01-08 08:28

          (????)??嗨,我是你穩(wěn)定更新、持續(xù)輸出的勾勾。



          做 React 開發(fā)的小伙伴,Redux 操作肯定特別熟練。


          那么問題來了,如果此時(shí)的 action 是個(gè)異步方法,你該怎么辦?


          答案是中間件解決方案


          很開心的是,Redux 本身也考慮了這一點(diǎn),它給我們提供了 applyMiddleware 這個(gè)中間件接口。


          而對于中間件的理解,它就是一個(gè)代碼管道。代碼在執(zhí)行的過程會(huì)經(jīng)過這個(gè)管道,那這樣的話,在管道里我們就可以做很多很多自己想做的事。


          統(tǒng)一標(biāo)準(zhǔn)

          Redux 作者也很聰明,不可能讓開發(fā)者隨意去寫入代碼,因此他給了統(tǒng)一寫法,不按照該寫法是要報(bào)錯(cuò)哦。


          • 該中間件是一個(gè)高階函數(shù),它的返回值必須是一個(gè)函數(shù)

          • 中間件函數(shù)以 store 中的 dispatch 和 getState 作為函數(shù)參數(shù)

            一個(gè)簡易的中間件代碼如下:

            let logger = function({getState,dispatch}){ //中間件函數(shù)  return function(next){    return function(action){      console.log('will dispatch', action)      let asd = next(action)    }  }}


            簡化后的代碼:

            let logger = ({getState,dispatch}) => (next) => (action) =>{  console.log('will dispatch', action)  next(action)}


            那對于異步的代碼我們放在這個(gè)函數(shù)內(nèi)執(zhí)行就行。


            如何使用 applyMiddleware

            對于 applyMiddleware 的使用就更簡單了,使用方法如下:

            let store = createStore(reducers,applyMiddleware(logger))


            就是把 applyMiddleware 當(dāng)作 createStore 的第二個(gè)參數(shù)。


            這里提示一下,applyMiddleware 的參數(shù)可以傳入很多中間件函數(shù),他們的執(zhí)行順序是從左往右,逐個(gè)函數(shù)執(zhí)行。


            代碼雖少,卻是 Redux 中的一道坎,希望可以幫助正在頭疼 Redux 異步如何處理的小伙伴們(? ?_?)?。


            推薦閱讀:

            老生常談的 Redux

            技術(shù)人年度總結(jié) | 2020,注定不平凡

            2020 最后一篇技術(shù)文:可愛的烏咪 UmiJS

            如何設(shè)計(jì)路由權(quán)限?

            是我 Web 端配不上阿里了。

            不可避免的問題:React 的路由如何抽離?

            前端人因?yàn)?Vue3 的 Ref-sugar 提案打起來了!


            點(diǎn)點(diǎn)“”和“在看”,保護(hù)頭發(fā),減少bug。

            瀏覽 37
            點(diǎn)贊
            評(píng)論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            評(píng)論
            圖片
            表情
            推薦
            點(diǎn)贊
            評(píng)論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            <kbd id="afajh"><form id="afajh"></form></kbd>
            <strong id="afajh"><dl id="afajh"></dl></strong>
              <del id="afajh"><form id="afajh"></form></del>
                  1. <th id="afajh"><progress id="afajh"></progress></th>
                    <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    无码高清成人在线观看 | 小黄片在线视频 | 国产传媒午夜成人 | 日韩另类在线观看 | 亚洲无码电影网我不卡 |