在完全阅读之前请不要关闭此问题。这可能听起来像一个问题,主要可以通过一个人的意见来回答。但为什么PropTypes有两种实现方式?哪一个更受欢迎?
一种方法是使用static关键字并定义我们的propTypes
。
class App extends React.Component {
static propTypes = {
...
}
}
另一种方法是做这样的事情:
class App extends React.Component {
...
}
App.propTypes = {
...
}
如果我们在构建用于制作的应用时使用propTypes
关键字,我们是否可以移除static
?由于鼓励删除propTypes
以获得性能提升。
答案 0 :(得分:39)
这是一个es7版本
class App extends React.Component {
static propTypes = {
...
}
}
虽然这是es6版本
class App extends React.Component {
...
}
App.propTypes = {
...
}
我个人更喜欢es7版本,因为查看组件顶部的propTypes
更有意义,概述渲染组件所需的内容(类似于需要的参数)功能)。
无论您使用的是哪个版本,如果要剥离propTypes
进行制作,都需要使用https://github.com/oliviertassinari/babel-plugin-transform-react-remove-prop-types。或者,您可以使用包含上述转换的https://github.com/thejameskyle/babel-react-optimize以及其他一些好东西,因为我猜您还希望进一步优化您的应用(
答案 1 :(得分:3)
我认为它是因为第一个版本
class App extends React.Component {
static propTypes = {
...
}
}
无效ES6。您不能在类声明中指定静态变量。如果要使用该版本,则需要将转换器设置为包含ES7。至少这是我的猜测,考虑到我在工作中的设置与我现在使用的设置。