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...