react 16.8.6
源碼以前寫的就是至關於的一個學習的筆記,雖然工做中的技術都是 react
相關,可是80%
都是一些日常不多涉及到的,致使本身對 react
的認識相對比較片面.一些 react
的api
不多用到,經過 react
閱讀,系統地熟悉了一下 react
全部的 api
以及一些相關特性使用場景.繼續根據官方的文檔和 react.js
閱讀源碼.html
https://zh-hans.reactjs.org/d...react
ReactSymbols
The Symbol used to tag the ReactElement-like types
即 用於標記相似ReactElement的類型的Symbol
;api
若是沒有原生的 Symbol
符號或 polyfill
,則使用普通數字進行表示。xss
採用的數字是十六進制;學習
const hasSymbol = typeof Symbol === 'function' && Symbol.for;
Symbol.for(key)
方法會根據給定的鍵 key
,來從運行時的 symbol
註冊表中找到對應的 symbol
,若是找到了,則返回它,不然,新建一個與該鍵關聯的 symbol
,並放入全局 symbol
註冊表中。spa
返回由給定的 key
找到的 symbol
,不然就是返回新建立的 symbol
code
和 Symbol()
不一樣的是,用 Symbol.for()
方法建立的的 symbol
會被放入一個全局 symbol
註冊表中。Symbol.for()
並非每次都會建立一個新的 symbol
,它會首先檢查給定的 key
是否已經在註冊表中了。假如是,則會直接返回上次存儲的那個。不然,它會再新建一個htm
export const REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; export const REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; export const REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; export const REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
爲何要賦值爲十六進制的數字blog
React
爲了保持一致性依然會在元素中定義$$typeof
屬性,只不過它會被設置成一個 number
類型的值——0xeac7等
xss
注入攻擊https://developer.mozilla.org...