摘要:官方推薦使用的情況是當(dāng)需要用到全局?jǐn)?shù)據(jù)的時候,比如主題,多語言制或者用戶登錄授權(quán)等等。
老鐵,學(xué)不動了?不要慌,耽誤不了你幾分鐘...(說謊臉,汗)long long ago
使用react的同胞們,也許都苦惱過其狀態(tài)管理以及組件之間的數(shù)據(jù)傳遞和共享(笨重的方式通過props依次往子組件傳遞)。
這時候,redux(mobx類似)出現(xiàn)了,我們累死累活的從水深火熱中解放了(第三方的庫相對較復(fù)雜和麻煩)。。。
那還沒有接觸過redux或者還在使用redux路上的同學(xué)怎么辦?不要著急,更簡單的東西來了(前方高能,請各老鐵注意?。?Context API!??!(React v16.3.0+) 戳我查看更新日志
先來安利一個todolist的栗子:
Context直譯就是上下文,是 React 16.3.0開始提供的一個官方API,它無需通過props的方式就可以完成項目中由上而下及組件之間的數(shù)據(jù)傳遞和共享,即你也不用依賴任何第三方的狀態(tài)數(shù)據(jù)插件庫就可以完成這項工作任務(wù)。
官方推薦使用的情況是:當(dāng)需要用到全局?jǐn)?shù)據(jù)的時候,比如:主題,多語言制或者用戶登錄授權(quán)等等。 ==當(dāng)然:== 你無需這么死板,當(dāng)需要用到多層級的組件數(shù)據(jù)傳遞或者復(fù)雜的數(shù)據(jù)共享場景也可以使用context api,也可以用來做緩存使用。
Context簡單使用// 1.使用React.createContext創(chuàng)建context提供者Provider 和 context訂閱者cunsomer const {Provider, Consumer} = React.createContext(defaultValue); // defaultValue根據(jù)使用場景設(shè)置 // 2.設(shè)置Provider組件 // 一般包裹需要訂閱的子組件的頂層父組件 // value設(shè)置需要傳遞和共享的數(shù)據(jù)以及改變數(shù)據(jù)的函數(shù)等 // 為了避免沒必要的重繪和渲染,value的數(shù)據(jù)屬性值通過組件state設(shè)置簡單總結(jié){/* some component with comsumer */} // 3.設(shè)置Consumer組件 // 通過函數(shù)作為子元素的方式,訂閱context的變換{value => /* render something based on the context value */} // 組合Provider 和 Consumer即可大功告成// 其他更多用法,比如生命周期函數(shù)調(diào)用(可點擊上面demo查看),高階組件等瀏覽一下文檔即會,非常簡單 {somechildren}
創(chuàng)建賣家和買家,通過大家都非常熟悉的React組件方式來進(jìn)行買賣交易,如此簡單的Context用法,大家還在等什么,趕緊丟掉其他的第三方庫?。?/p>
結(jié)語: 小小皮一下,大家不要打我,新功能可以嘗試,也需要大家的討論和研究,類似redux的第三方庫還是非常強大~~(前端攻城獅③群:743490497,歡迎大家進(jìn)群討論)更多資料請查看以下鏈接:
https://reactjs.org/docs/context.html
https://css-tricks.com/digging-into-react-context/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/54566.html
摘要:官方推薦使用的情況是當(dāng)需要用到全局?jǐn)?shù)據(jù)的時候,比如主題,多語言制或者用戶登錄授權(quán)等等。 老鐵,學(xué)不動了?不要慌,耽誤不了你幾分鐘...(說謊臉,汗) long long ago 使用react的同胞們,也許都苦惱過其狀態(tài)管理以及組件之間的數(shù)據(jù)傳遞和共享(笨重的方式通過props依次往子組件傳遞)。 這時候,redux(mobx類似)出現(xiàn)了,我們累死累活的從水深火熱中解放了(第三方的庫相...
摘要:對于,其默認(rèn)大小一般是本地存儲和都保存在瀏覽器端,且都是同源的。把變量放在閉包中和放在全局作用域,對內(nèi)存的影響是一致的,這里并不能說成是內(nèi)存泄露。將新的樹和之前的虛擬樹進(jìn)行相比較,根據(jù)結(jié)果對進(jìn)行精準(zhǔn)響應(yīng)。 1. JavaScript 1. JavaScript文件在什么情況下會放在html哪個位置 https://zhuanlan.zhihu.com/p/... 對于必須要在DOM加載...
摘要:對于,其默認(rèn)大小一般是本地存儲和都保存在瀏覽器端,且都是同源的。把變量放在閉包中和放在全局作用域,對內(nèi)存的影響是一致的,這里并不能說成是內(nèi)存泄露。將新的樹和之前的虛擬樹進(jìn)行相比較,根據(jù)結(jié)果對進(jìn)行精準(zhǔn)響應(yīng)。 1. JavaScript 1. JavaScript文件在什么情況下會放在html哪個位置 https://zhuanlan.zhihu.com/p/... 對于必須要在DOM加載...
摘要:我現(xiàn)在寫的這些是為了解決和這兩個狀態(tài)管理庫之間的困惑。這甚至是危險的,因為這部分人將無法體驗和這些庫所要解決的問題。這肯定是要第一時間解決的問題。函數(shù)式編程是不斷上升的范式,但對于大部分開發(fā)者來說是新奇的。規(guī)模持續(xù)增長的應(yīng) 原文地址:Redux or MobX: An attempt to dissolve the Confusion 原文作者:rwieruch 我在去年大量的使用...
閱讀 1581·2021-11-25 09:43
閱讀 2374·2019-08-30 15:55
閱讀 1488·2019-08-30 13:08
閱讀 2721·2019-08-29 10:59
閱讀 846·2019-08-29 10:54
閱讀 1618·2019-08-26 18:26
閱讀 2587·2019-08-26 13:44
閱讀 2682·2019-08-23 18:36