这是我已经进行了相当长一段时间的方式了:
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/