Reactソース読解-9_040


Reactソース読解-9react 16.8.6のソースコードを読み続けます
前に书いたのは1つの学习のノートに相当して、仕事の中の技术はすべてreact関系ですが、80%はすべていくつかふだんめったに触れないので、自分のreactに対する认识は比较的に一面的です.いくつかのreactapiはめったに使われず、reactを通じて読むことで、reactのすべてのapiといくつかの関連特性の使用シーンを系統的に熟知した.公式のドキュメントとreact.jsに従ってソースコードを読み続けます.
いくつかの準備作業
  • 公式貢献ガイド
  • https://zh-hans.reactjs.org/d... ReactSymbols The Symbol used to tag the ReactElement-like typesすなわち ReactElement Symbol;
    原生のSymbol符号またはpolyfillがなければ、通常の数字で表される.
    採用した数字は16進数です.
    const hasSymbol = typeof Symbol === 'function' && Symbol.for;
    Symbol.for(key)メソッドは、所与のキーkeyに従って、実行時のsymbolレジストリから対応するsymbolを見つけ、見つかった場合はそれを返し、そうでなければ、そのキーに関連付けられたsymbolを新規に作成し、グローバルsymbolレジストリに格納する.
    指定されたkeyによって見つかったsymbolを返します.そうでなければ、新しく作成されたsymbolを返します.Symbol()とは異なり、Symbol.for()メソッドで作成されたsymbolは、グローバルsymbolレジストリに格納されます.Symbol.for()は、毎回新しいsymbolが作成されるわけではありません.まず、指定されたkeyがレジストリに登録されているかどうかを確認します.もしそうであれば、前回保存したものに直接戻ります.そうでなければ、新しい
    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;
  • なぜ16進数に値を付けたのか
  • 0 xeac 7はReact
  • に少し似ているように見えます
  • React一貫性を維持するために、要素に$$typeofのプロパティが定義されますが、numberの値に設定されます.0xeac7
  • です.
  • https://juejin.im/entry/5c170...疑惑を解決し、xss注入攻撃
  • を防止した.

    https://developer.mozilla.org...