static propTypes Vs React.PropTypes

时间:2016-09-20 06:53:02

标签: javascript reactjs

在完全阅读之前请不要关闭此问题。这可能听起来像一个问题,主要可以通过一个人的意见来回答。但为什么PropTypes有两种实现方式?哪一个更受欢迎?

一种方法是使用static关键字并定义我们的propTypes

class App extends React.Component {
  static propTypes = {
    ...
  }
}

另一种方法是做这样的事情:

class App extends React.Component {
  ...
}

App.propTypes = {
  ...
}

如果我们在构建用于制作的应用时使用propTypes关键字,我们是否可以移除static?由于鼓励删除propTypes以获得性能提升。

2 个答案:

答案 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。至少这是我的猜测,考虑到我在工作中的设置与我现在使用的设置。