初識Context
我們知道,在JS中context指的是函數的執?上下?,函數被調?時,this指向誰,誰就是當前的執?上下?;
react中的context是什么呢?官??檔給出:
Context 通過組件樹提供了?個傳遞數據的?法,從?避免了在每?個層級?動的傳遞 props 屬性。
?檔也沒具體給出context到底是什么,?是告訴我們context能?什么,也就是說,如果我們不想通過props實現組件樹的逐層傳遞
數據,則可以使?context實現跨層級進?數據傳遞!
如何使?Context
context api給出三個概念:React.createContext()、Provider、Consumer;
React.createContext()
這個?法?來創建context對象,并包含Provider、Consumer兩個組件 <Provider />、<Consumer />
const {Provider, Consumer} = React.createContext();
Provider
數據的?產者,通過value屬性接收存儲的公共狀態,來傳遞給?組件或后代組件
eg:
<Provider value={/* some value /}>
Consumer
數據的消費者,通過訂閱Provider傳?的context的值,來實時更新當前組件的狀態
eg:
<Consumer>
{value => / render something based on the context value */}
</Consumer>
值得?提的是每當Provider的值發?改變時, 作為Provider后代的所有Consumers都會重新渲染
props單向數據流動:
如果覺得Props傳遞數據很繁瑣,可以采?context,進?跨組件傳遞數據
再最外層的組件上,通過?產者Provider組件進?包裹,并存儲共享數據到value中,當然可以是任何數據類型。后帶需要?到共享數
據的組件均可通過Consumer進?數據獲取。
初識Context
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...