13 中介軟體和高階元件

2021-10-24 23:34:44 字數 2762 閱讀 8613

通常情況下,action只是乙個物件,不能包含非同步操作,這導致了很多建立action的邏輯只能寫在元件中,**量較多也不便於復用,同時對該部分**測試的時候也比較困難,元件的業務邏輯也不清晰,使用中介軟體了之後,可以通過actioncreator非同步編寫action,這樣**就會拆分到actioncreator中,可維護性大大提高,可以方便於測試、復用,同時actioncreator還整合了非同步操作中不同的action派發機制,減少編碼過程中的**量。

通過redux-thunk | redux-promise | redux-sega等中介軟體解決希望在redux中執行非同步操作的需求

redux-thunk的使用

1.安裝redux-thunk中介軟體

yarn add redux-thunk
2. 在redux的store/index.js進行設定

import reducer from "./reducer"

import thunk from "redux-thunk"

export default store

3. 在actioncreators中進行設定

redux-thunk的原理:

建立action —> 中介軟體 —> 派發給reducer處理,action到reducer中間會經歷中介軟體,我們可以在中介軟體中對資料進行操作

actioncreator如果返回的是物件,內部就會呼叫next(),自動的呼叫dispatch派發給下乙個中介軟體 | render 來處理

actioncreator如果返回的是乙個函式,在函式內部做非同步操作–> 引數是dispatch扔給你的,讓你在進行非同步操作的合適時機進行手動派發

import

from

"./actiontype"

export

default

}return action

},add())

},2000)}

}

redux-thunk原理

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

正因為這個action creator可以返回乙個函式,那麼就可以在這個函式中執行一些非同步的操作。換言之,redux的中介軟體都是對store.dispatch()的增強

dispatch乙個action之後,到達reducer之前,進行一些額外的操作,就需要用到middleware。你可以利用 redux middleware 來進行日誌記錄、建立崩潰報告、呼叫非同步介面或者路由等等。

在學習高階元件之前,先回憶一下高階函式:高階函式就是乙個函式內部返回乙個新的函式,函式內部採用閉包的寫法。

let add = x =>

}// 呼叫

add(12)(2)

而高階元件也是如此

高階元件本質上也是乙個高階函式,內部可以接收乙個元件,然後返回新的元件

例如: react-redux提供的connect()(元件)就是高階元件,react.memo(函式式元件)也是高階元件

元件型別的劃分:

函式式元件(無狀態元件)

不能定義狀態,沒有鉤子函式,使用hook起到鉤子函式的作用

類元件可以定義狀態,有鉤子函式,

對於表單元素,還有受控元件和非受控元件的劃分

高階元件hoc :

connect()() react.memo(函式式元件)

封裝乙個具有版權資訊的高階元件,內部接收乙個元件,並最終返回乙個新的元件

由於元件呼叫需要經過高階元件,狀態傳遞也要經由高階元件

高階元件withcomp.js

import react,

from

'react'

const

withcopy

= comp =>

/>

//高階元件將屬性傳遞給元件www

©:葫蘆娃

<

/div>)}

}}export

default withcopy

需要呼叫高階元件的普通元件

import react,

from

'react'

import withcopy from

"./withcomp"

class

wwwextends

component

<

/div>)}

}export

default

withcopy

(www)

import react,

from

'react'

import

wwwfrom

"./components/www"

export

default

class

extends

component

render()

/>

<

/div>)}

}

13 2 7 中介軟體

中介軟體顧名思義,是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能。如果你想修改請求,例如被傳送到view中的httprequest物件。或者你想修改view返回的htt...

21 中介軟體

一 中介軟體的定義 1.中介軟體是django請求 響應處理的鉤子框架,它是乙個輕量級的 低階的 外掛程式 系統,用於全域性改變django的輸入或輸出 2.中介軟體以類的形式體現 3.每個中介軟體元件負責做一些特定的功能,例如django包含乙個中介軟體元件 authenticationmiddl...

07 中介軟體

5 獲取的資料會交給最後乙個中介軟體的process response方法處理,然後依次向前面的中介軟體process response 6 在任一中介軟體的process request和process view方法中有返回值就會直接返回給process response 3 檢視函式 4 中介軟...