这是我已经进行了相当长一段时间的方式了:

export default class AttachmentCreator extends Component {
  render() {
    return <div>
      <RaisedButton primary label="Add Attachment" />
    </div>
  }
}

AttachmentCreator.propTypes = {
  id: PropTypes.string,
};

但我见过有人这样做:
export default class AttachmentCreator extends Component {
  static propTypes = {
    id: PropTypes.string,
  };

  render() {
    return <div>
      <RaisedButton primary label="Add Attachment" />
    </div>
  }
}

实际上,我也看到人们也在构造函数之外设置初始状态。这是好习惯吗?这一直困扰着我,但是我记得在某处的讨论中有人说将默认 Prop 设置为静态不是一个好主意-我只是不记得为什么。

最佳答案

es2015类当前不支持非功能属性。这是es2016的提案。第二种方法要方便得多,但是需要一个插件来支持语法(theres a very common babel plugin for it)。

另一方面,一堆开放源代码项目开始处理TypeType接口(interface)或ActionConstants之类的原型(prototype),并实际上创建了单独的文件夹/文件来容纳各种组件的prop类型,然后将其导入组件。

因此,总而言之,两种语法都可以使用。但是如果您只想严格使用ES2015,则规范中尚不支持后一种语法。

关于class - 是否可以将propTypes和defaultProps作为静态prop放入React类中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36778260/

10-12 01:51