`

React

 
阅读更多

React提供调用接口。包含创建ReactComponent组件、ReactElement元素、校验propsType、操纵props.children等。

 

'use strict';

var _assign = require('object-assign');

var ReactChildren = require('./ReactChildren');
var ReactComponent = require('./ReactComponent');
var ReactPureComponent = require('./ReactPureComponent');
var ReactClass = require('./ReactClass');
var ReactDOMFactories = require('./ReactDOMFactories');
var ReactElement = require('./ReactElement');
var ReactPropTypes = require('./ReactPropTypes');
var ReactVersion = require('./ReactVersion');

// 校验传参是否单个ReactElement
var onlyChild = require('./onlyChild');

// warning(condition,format) condition为否值,替换format中的"%s",并console.error警告 
var warning = require('fbjs/lib/warning');

var createElement = ReactElement.createElement;
var createFactory = ReactElement.createFactory;
var cloneElement = ReactElement.cloneElement;

if (process.env.NODE_ENV !== 'production') {
  var ReactElementValidator = require('./ReactElementValidator');
  createElement = ReactElementValidator.createElement;
  createFactory = ReactElementValidator.createFactory;
  cloneElement = ReactElementValidator.cloneElement;
}

var __spread = _assign;

if (process.env.NODE_ENV !== 'production') {
  var warned = false;
  __spread = function () {
    process.env.NODE_ENV !== 'production' ? 
      warning(warned, 'React.__spread is deprecated and should not be used. Use ' 
        + 'Object.assign directly or another helper function with similar ' 
        + 'semantics. You may be seeing this warning due to your compiler. ' 
        + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;
    warned = true;
    return _assign.apply(null, arguments);
  };
}

var React = {
  // Modern
  // 操纵类props.children等ReactNode集合的props属性,可以是单个ReactNode或嵌套数组形式的多个ReactNode
  Children: {
    map: ReactChildren.map,// 对ReactNode集合内的ReactNode执行遍历函数,并返回新的ReactNode
    forEach: ReactChildren.forEach,// 只对ReactNode集合内的ReactNode执行遍历函数
    count: ReactChildren.count,// 统计ReactNode集合中包含ReactNode的个数
    toArray: ReactChildren.toArray,// 将嵌套式的ReactNode集合转化为扁平化的ReactNode数组
    only: onlyChild// 校验传参是否单个ReactElement
  },

  Component: ReactComponent,// 继承后创建React用户自定义组件
  PureComponent: ReactPureComponent,// 继承后创建React用户自定义纯组件pureComponent,浅比较props变更

  createElement: createElement,// 创建ReactELement
  cloneElement: cloneElement,// 克隆ReactELement,改变部分属性
  isValidElement: ReactElement.isValidElement,// 校验传参是否ReactElement

  // Classic
  PropTypes: ReactPropTypes,// 提供propsType、contextType、childContextType的校验函数
  createClass: ReactClass.createClass,// 创建React用户自定义组件,详细约定了部分组件实例方法的定义状况
  createFactory: createFactory,// 提供创建ReactELement的工厂函数,该工厂函数预先设置ReactELement关联的组件
  createMixin: function (mixin) {
    return mixin;
  },
  DOM: ReactDOMFactories,// React封装的Dom组件

  version: ReactVersion,// 版本号
  __spread: __spread// 不再使用的方法
};

module.exports = React;

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics