日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

react的导出是怎么实现的_从零开始开发一个 React

發布時間:2025/3/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 react的导出是怎么实现的_从零开始开发一个 React 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個是從零開始開發一個 React 系列的第七篇。想要訪問之前的內容可以點擊下方的鏈接進行訪問:

  • 最簡單的實現,包括 vdom 結構,createElement,ReactDOM.render
  • 增加 Class 的支持
  • 增加 JSX 的支持
  • 增加 state 支持
  • 增加聲明周期
  • 增加 dom-diff(調和算法)
  • 先行知識

    學習這個課程之前呢,需要各位了解 React 的 api,以及做了什么事情。

    如果完全不了解的話,不建議您繼續往下看。

    如果你已經具備了相關 React 的知識,那么就讓我們開始吧。

    本章要實現的效果

    本章主要實現 react 的 Context API。

    Context 提供了一個無需為每層組件手動添加 props,就能在組件樹間進行數據傳遞的方法。

    在一個典型的 React 應用中,數據是通過 props 屬性自上而下(由父及子)進行傳遞的,但這種做法對于某些類型的屬性而言是極其繁瑣的(例如:地區偏好,UI 主題),這些屬性是應用程序中許多組件都需要的。Context 提供了一種在組件之間共享此類值的方式,而不必顯式地通過組件樹的逐層傳遞 props。

    開始實現

    我們繼續拿官網的一個關于Context基礎API的例子來做。

    我們需要將theme從頂層的APP組件傳遞到最下層的Button,從而Button能夠根據主題的不同顯示不同的樣式,不使用Context的話是這樣的:

    使用Context的話是這樣的:

    代碼如下:

    // Context 可以讓我們無須明確地傳遍每一個組件,就能將值深入傳遞進組件樹。 // 為當前的 theme 創建一個 context(“light”為默認值)。 const ThemeContext = React.createContext('light');class App extends React.Component {render() {// 使用一個 Provider 來將當前的 theme 傳遞給以下的組件樹。// 無論多深,任何組件都能讀取這個值。// 在這個例子中,我們將 “dark” 作為當前的值傳遞下去。return (<ThemeContext.Provider value="dark"><Toolbar /></ThemeContext.Provider>);} }// 中間的組件再也不必指明往下傳遞 theme 了。 function Toolbar(props) {return (<div><ThemedButton /></div>); }class ThemedButton extends React.Component {// 指定 contextType 讀取當前的 theme context。// React 會往上找到最近的 theme Provider,然后使用它的值。// 在這個例子中,當前的 theme 值為 “dark”。static contextType = ThemeContext;render() {return <Button theme={this.context} />;} }

    通過代碼發現這里一共需要實現的API有React.createContext, 還有一個contextType.其中React.createContext是會返回一個對象。這個對象有一個key為Provider的組件。 這個組件接受一個value的prop并將其作為context的值。 contextType是一個靜態屬性,也就說所有的組件實例都公用一個,沒必要都產生一個。我們的組件從Context里讀取最新的數據即可。

    接下來我們分別實現React.createContext和contextType。

    導出 React.createContext API

    我們首先要做的第一件事情就是導出createContextAPI, 盡管這個API我們還沒寫,我們先占個位置。

    const React = {createElement,Component: require("./component"), + createContext: require("./context").createContext };

    實現數據的存儲

    我們新建一個文件context.js 我們先放一個空殼子進去,接下來我們就要實現這個,其實代碼很簡單。

    + import React from './mini-react'; + import Component from './component';+ export function createContext(defaultValue) { + return { + Provider: class Provider extends Component { + render() { + return <div></div> + } + } + } +}

    接下來我們填充具體的邏輯,邏輯很簡單,直接上代碼。

    import React from './mini-react'; import Component from './component';export function createContext(defaultValue) {return {Provider: class Provider extends Component {render() { + const currentValue = this.props.value; + Provider.currentValue = currentValue || defaultValue;return <div></div>} }} }

    實現數據的讀取

    兩行代碼搞定了context數據的更新邏輯,如何讓所有組件都能接受到里面的值呢? 接下來我們需要修改下Component的實現。

    簡單增加一行代碼:

    class Component {constructor(props) {this.props = props; + this.context = this.constructor.contextType && this.constructor.contextType.Provider.currentValue;...}... }

    總結

    本節實現了React的Context API相關的功能, 下一節我們引入Ref(文章未更新)

    總結

    以上是生活随笔為你收集整理的react的导出是怎么实现的_从零开始开发一个 React的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 椎名由奈在线观看 | 天天操夜夜欢 | 狠狠操91 | 成年人免费网站在线观看 | 亚洲在线视频网站 | 亚洲情se| 日韩欧美午夜 | 激情综合五月天 | 在线免费看黄av | 国产va在线观看 | 成人h在线 | 电影《两个尼姑》免费播放 | 欧美激情小视频 | 久久久欧美精品 | 国产激情一区二区三区在线观看 | 91在线播放国产 | 超碰人人91| 亚洲操图 | 天天爽夜夜爽夜夜爽精品 | 日本在线www | 亚洲永久av | 国产又黄又大又粗的视频 | 久免费一级suv好看的国产 | 亚洲经典一区二区三区 | 不卡中文字幕在线观看 | 国产成人综合久久 | 欧美熟女一区二区 | 日韩精品一区二区三区网站 | 日本乱偷中文字幕 | 蜜桃网站 | 亚洲狼人av| 国产激情久久久久 | 精品少妇人妻av一区二区 | 三级中文字幕 | 在线性视频 | 久久综合久久88 | 精品成人av一区二区在线播放 | 久久久丁香| 午夜精品一区二区三区免费视频 | 香蕉日日 | 欧美精品一区视频 | 国产成人精品一区二区三区在线观看 | 午夜视频福利在线 | 国产亚洲欧美一区二区三区 | 女人被灌满精子 | se在线观看| jizz日本在线观看 | 欧美双性人妖o0 | 国产精品高潮AV无码 | 久久黄色免费视频 | 午夜免费网 | 57pao成人国产永久免费视频 | 亚洲欧美经典 | 99久久亚洲精品 | 丰满白嫩尤物一区二区 | 国产精品国语自产拍在线观看 | www.97超碰 | 日韩亚洲一区二区三区 | 亚洲综合小说 | 亚洲精品系列 | 欧美美女性生活 | 蜜臀99久久精品久久久久小说 | 97久久国产亚洲精品超碰热 | 日韩大片在线观看 | 精品久久人人妻人人做人人 | 国产毛片不卡 | 97人人爽| 国产精品夫妻 | 人成亚洲| 日日干日日射 | 老熟女重囗味hdxx69 | 综合激情五月婷婷 | 毛片黄色一级 | 国产精品高潮呻吟久久av黑人 | 少妇激情偷人三级 | 69性视频| 大色综合 | 亚洲天堂网视频 | 欧美一区二区激情 | 欧美性猛交xx乱大交 | 成人h在线| 色播五月激情五月 | 国产成人精品一区二区 | 国产在线色 | zzjj国产精品一区二区 | 中文字幕在线天堂 | 色亚洲欧美 | 久久好色| 欧美黄色一级 | 欧美性生活一区 | 精品在线免费观看视频 | 十八禁毛片 | 国产青青在线 | 超碰人人超碰 | 大地资源二中文在线影视免费观看 | 久久午夜国产 | 在线一本| 一本色道久久综合无码人妻 | 中文字幕最新 |