react-readux元件
https://github.com/reduxjs/react-redux
把一個元件拆成兩個部分,一個叫UI元件,一個叫容器元件。
1,UI元件,presentational component,純租金
特點:
- 隻負責UI的呈現,不帶有任何的業務邏輯
- 無狀态元件,沒有狀态(即不使用this.state這個變量)
- 所有資料都由參數(this.props)提供
- 不使用任何Redux的API
UI元件的例子:
const Title = value => <h1>{value}</h1>
2,容器元件
負責管理資料和邏輯
- 負責管理資料和業務邏輯,不負責UI的呈現
- 帶有内部狀态
- 使用Redux的API
3,把一個UI元件轉成容器元件
React-Redux提供connect()方法,用于從UI元件生成容器元件。connect的意思,就是将這兩種租金連起來。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2EjNwMTOzkjMtEzM3YDN0IzNwkjM3ADMyAjMtIDMzUTMz8CX3ADMyAjMvwlMwMTNxMzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
TodoList是UI元件,VisibleTodoList就是由React-Redux通過coonnect()方法自動生成的容器元件。
3.1 mapStateToProps
建立一個從(外部的)state對象到(UI元件的)props對象的映射關系。
mapStateToProps會訂閱Store,每當state更新的時候,就會自動執行,重新計算UI元件的參數,進而觸發UI元件重新渲染
3.2 mapDispatchToProps
用來建立UI元件的參數到store.dispatch方法的映射。也就是說,它定義了哪些使用者的操作應該當做Action,傳給Store。它可以是一個函數,也可以是一個對象。
4,React-Redux提供Provider元件,可以讓容器元件拿到state.
如果覺得本文對您有幫助~可以支付寶(左)或微信支援一下:
看到小夥伴打賞時給我寫一些鼓勵的話,真的非常感動,謝謝你們。
我開了個微信公衆号(第三個二維碼)用來分享自己的職場英語相關學習經驗,感興趣可以關注,我會不斷更新~