React static defaultProps (属性默认值)

114 阅读1分钟

static defaultProps源码,在创建reactElement元素前,

如果props属性为undefined则赋值defaultProps

// Resolve default props
  if (type && type.defaultProps) {
    const defaultProps = type.defaultProps;
    for (propName in defaultProps) {
      if (props[propName] === undefined) {
        props[propName] = defaultProps[propName];
      }
    }
  }

  return ReactElement(
    type,
    key,
    ref,
    undefined,
    undefined,
    ReactCurrentOwner.current,
    props,
  );

image.png

class和createClass的比较

一个调用React.createClass并传入一个对象,另一个则是使用class继承React.Component

js
复制代码
var InputControlES5 = React.createClass({
propTypes: {
  initialValue: React.PropTypes.string
},
defaultProps: {
  initialValue: ''
}, // Set up initial state
getInitialState: function() {
  return {
    text: this.props.initialValue || 'placeholder'
  };
},
handleChange: function(event) {
  this.setState({
    text: event.target.value
  });
},
render: function() {
  return (
    <div>
      Type something:
      <input onChange={this.handleChange}
        value={this.state.text} />
      </div>
    );
  }
});