react 原始碼defaultProps實現

2021-10-07 03:58:00 字數 943 閱讀 1731

首先我們回顧一下 defaultprops 的用法

import react from 'react';

render()

}}name: "hello react"

};

這樣我們就可以得到乙個渲染出hello react的介面啦。

此時的關鍵,在於需要理解 reactdom.render 實際執行了什麼方法。

經過斷點除錯,我們可以清晰的看到

**從

react.createelmentwithvalidation(type, props, children)
判斷第乙個引數(示例**中的 是否是有效元素 ), 如果不正確,你就會看到 react.createelement: type is invalid , 這個熟悉又親切的報錯

執行 react.createelement(type, props, children)

檢查元素的 props 是否符合 proptypes 的約定

其中對我們理解defaultprops有幫助的是第2步,react.createelement

我們可以看到在原始碼位址的第221行中,寫著清晰的注釋 resolve default props 。

// resolve default props

if (type && type.defaultprops)

}}

因為當 type.defaultprops 存在時,是需要對其進行遍歷的。

所以如果你的檔案中存在很多處這種無效的**,雖然並不會對介面產生任何影響,但是確實影響了**的質量。

總結勿以善小而不為,勿以惡小而為之。注意自己的實現細節,提高**質量。

react 如此厲害的框架,除了優秀的架構和出色的演算法,其實也離不開這些普普通通的很好理解的**。

React原始碼解析

距離第一篇 react原始碼解析 一 已經過去將近4個月的時間,由於是我第一次進行原始碼解析相關的寫作,思路和文筆還不夠成熟。一百多天以來,我基於讀者反饋反思這幾篇文章中的不足,同時也在不斷學習借鑑其他優秀作者的寫作方法和寫作思路。最終總結出對於自己的原始碼寫作來說,需要改進的幾點 1.示例 太多 ...

react原始碼探索

react核心部分為 1 虛擬dom物件 reactdom.render args,element 這個方法第乙個引數接收三種形式的內容的 第一種 字串 第二種 由createclass建立的物件,使用createelement處理 第三種 直接有createelement建立的物件 這些還未呼叫r...

react 原始碼分析

筆者最近開擼了react原始碼,自己為自己做個記錄,同時希望能幫到其他同學。從個人的視角來看,react大致分為以下幾個部分 1.react其實沒啥,都是透傳到react dom上,前提是我看的是react dom,不是react native.2.react dom幾大部分 1.事件部分,針對原生...