2016-09-20 2 views
15

Пожалуйста, не закрывайте этот вопрос перед чтением полностью. Это может звучать как вопрос, на который можно ответить, в первую очередь, по его мнению. Но почему существуют две реализации PropTypes? Какой из них предпочтительнее?static propTypes Vs React.PropTypes

Один из способов - использовать статическое ключевое слово и определить наш propTypes.

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

Другой способ сделать что-то вроде этого:

class App extends React.Component { 
    ... 
} 

App.propTypes = { 
    ... 
} 

Можно ли удалить propTypes если мы используем static ключевое слово во время создания приложения для производства? Поскольку удаление propTypes рекомендуется для повышения производительности.

+0

Хотелось бы знать, какой путь является предпочтительным, если вы находитесь в среде, где оба работают. Просто получил комментарий для проверки кода, чтобы предпочесть статический путь, но я не понимаю, насколько это оправдано для этого метода: «App.propTypes = {}» способ – d3ming

ответ

2

Я думаю, что его, потому что первая версия

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

не является действительным ES6. В объявлении класса не может быть задана статическая переменная. Если вы хотите использовать эту версию, вам нужно будет установить ваш транспилер для включения ES7. По крайней мере, это мое предположение, учитывая настройки, которые у меня есть на работе, и настройки, которые я использую сейчас.

14

Это 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, который включает в себя вышеупомянутое преобразование плюс несколько других положительных героев, так как я думаю, вы также захотите оптимизировать свое приложение далее (:

+0

@Mihir отвечает на ваш вопрос? Если бы вы могли принять это? –