React proptypes 组件与元素

React proptypes component vs element

有什么区别:

var Icon = React.createClass({
  propTypes: {
    name: React.PropTypes.string
  },
  render: function(){
    return (
      <span className={'glyphicon glyphicon-'+this.props.name}></span>
    );
  }
});

var Button = React.createClass({
  propTypes: {
    content: React.PropTypes.element // This one?
    content: React.PropTypes.component // Or this one?
  },
  render: function() {
    return (
       <button>{content}</button>
    );
  }
});

我想用;

<Button content={<Icon name="heart" />} />

在什么情况下我应该使用另一个?

谢谢

我认为您应该像这样渲染按钮:

var Button = React.createClass({
  render: function() {
    return (
       <button>{this.props.children}</button>
    );
  }
});

然后您可以将它与 <Icon /> 或其他任何内容(文本...)一起使用:

<Button><Icon name="heart" /></Button>

<Button>anything</Button>

然后正确的 proptype 取决于你想在你的 <Button /> 中允许什么 (但我不确定 React.PropTypes.component 是否存在,它不在文档中:http://facebook.github.io/react/docs/reusable-components.html