React - Context API 維護全域性狀態,實現全域性元件通訊
Context API 維護全域性狀態,實現全域性元件通訊
Context API 有 3 個關鍵的要素:React.createContext、Provider、Consumer。
我們通過呼叫React.createContext
,可以建立出一組 Provider
。Provider 作為資料的提供方,可以將資料下發給自身元件樹中任意層級的 Consumer
。
React.createContext:
作用是建立一個 context 物件。
const AppContext = React.createContext(defaultValue)
const { Provider, Consumer } = AppContext
注意,在建立的過程中,我們可以選擇性地傳入一個 defaultValue,當 Consumer 沒有對應的 Provider 時,value 引數會直接取 defaultValue 傳遞給 Consumer。
注意:Cosumer 不僅能夠讀取到 Provider 下發的資料,還能讀取到這些資料後續的更新。這意味著資料在生產者和消費者之間能夠及時同步,這對 Context 這種模式來說至關重要。
例項:
// 定義context方法:
const AppContext = React.createContext(defaultValue)
// 取出方法
const { Provider, Consumer } = AppContext
// 父元件使用Provider, 提供資料
<Provider value={title: this.state.title, content: this.state.content}>
<Title />
<Content />
</Provider>
// 消費者 Consumer, 使用傳遞的資料,這個函式需返回一個元件
<Consumer>
{value => <div>{value.title}</div>}
</Consumer>
相關文章
- 實現基於React的全域性提示元件ToastReact元件AST
- 小程式全域性狀態管理
- vue全域性APIVueAPI
- 劍走偏鋒之Vue元件通訊(二)——利用provide / inject屬性構建全域性狀態管理Vue元件IDE
- React製作全域性Tooltip文字提示元件React元件
- 靜態全域性變數和全域性變數變數
- Flutter 全域性狀態管理之 Provider 初探FlutterIDE
- 微信小程式全域性狀態管理 wxscv微信小程式
- 你可以零侵入式實現小程式的全域性狀態管理嗎
- 全域性元件實現遞迴樹,避免迴圈引用元件遞迴
- node 全域性物件和全域性變數物件變數
- duxapp放棄了redux,在duxapp中區域性、全域性狀態的實現方案APPRedux
- Vue元件之全域性註冊Vue元件
- Lightmass靜態全域性光照
- React專案實現全域性 loading 以及錯誤提示React
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- vue.js全域性元件和區域性元件區別Vue.js元件
- vue定義全域性變數和全域性方法Vue變數
- React Context API: 輕鬆管理狀態ReactContextAPI
- 在範圍分割槽表上分割槽維護操作對全域性及本地索引狀態的影響(2)索引
- 框架(frameset),全域性屬性框架
- Vue 原始碼解讀(5)—— 全域性 APIVue原始碼API
- 實現elementUI表單的全域性驗證UI
- Win32全域性鉤子實現 (轉)Win32
- 鴻蒙系統(HarmonyOS)全域性彈窗實現鴻蒙
- 手把手教你擼vue全域性元件Vue元件
- 如何寫一個全域性的 Notice 元件?元件
- 全域性變數變數
- Js全域性物件JS物件
- CMake 屬性之全域性屬性
- Nginx通過geo模式實現限速白名單和全域性負載均衡 - 運維筆記Nginx模式負載運維筆記
- vue2.0全域性路由守衛(全域性控制登入)Vue路由
- 微信小程式的全域性彈窗以及全域性例項微信小程式
- React新Context API在前端狀態管理的實踐ReactContextAPI前端
- 探索React原始碼的全域性模組系統React原始碼
- html5全域性屬性HTML
- 在Vue3中如何實現四種全域性狀態資料的統一管理?Vue
- [React]屬性和狀態React