抹桥的博客
Language
Home
Archive
About
GitHub
Language
主题色
250
189 words
1 minutes
An Overview of React Source Code - The Entry File

This series of articles is based on the latest version of React: 16.0.0-beta.5. First, let’s look at the entry file ReactEntry.js:

var ReactBaseClasses = require("ReactBaseClasses");
var ReactChildren = require("ReactChildren");
var ReactElement = require("ReactElement");
var ReactVersion = require("ReactVersion");

var onlyChild = require("onlyChild");

Dependent Modules:

  • ReactBaseClasses
  • ReactChildren
  • ReactElement
  • onlyChild
  • ReactElementValidator Next:
var createElement = ReactElement.createElement;
var createFactory = ReactElement.createFactory;
var cloneElement = ReactElement.cloneElement;

if (__DEV__) {
  var ReactElementValidator = require("ReactElementValidator");
  createElement = ReactElementValidator.createElement;
  createFactory = ReactElementValidator.createFactory;
  cloneElement = ReactElementValidator.cloneElement;
}

We can see that component validation is provided in the development environment.

var React = {
  Children: {
    map: ReactChildren.map,
    forEach: ReactChildren.forEach,
    count: ReactChildren.count,
    toArray: ReactChildren.toArray,
    only: onlyChild,
  },

  Component: ReactBaseClasses.Component,
  PureComponent: ReactBaseClasses.PureComponent,
  unstable_AsyncComponent: ReactBaseClasses.AsyncComponent,

  createElement: createElement,
  cloneElement: cloneElement,
  isValidElement: ReactElement.isValidElement,

  createFactory: createFactory,

  version: ReactVersion,

  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {
    ReactCurrentOwner: require("ReactCurrentOwner"),
  },
};

These are all the APIs provided by React. In subsequent articles, I will interpret the implementation of these APIs one by one.

Related Articles#

  • {% post_link react-source-code-analyze-1 React Source Code Analysis - Entry File %}
  • {% post_link react-source-code-analyze-2 React Source Code Analysis - ReactBaseClasses %}
  • {% post_link react-source-code-analyze-3 React Source Code Analysis - ReactChildren %}
  • {% post_link react-source-code-analyze-4 React Source Code Analysis - ReactElement %}
  • {% post_link react-source-code-analyze-5 React Source Code Analysis - onlyChildren %}

This article was published on September 21, 2017 and last updated on September 21, 2017, 2937 days ago. The content may be outdated.

An Overview of React Source Code - The Entry File
https://blog.kisnows.com/en-US/2017/09/21/react-source-code-analyze-1/
Author
Kisnows
Published at
2017-09-21
License
CC BY-NC-ND 4.0