static
не был частью последнего поколения Javascript («ES5»), поэтому вы не найдете его в старой документации. Однако он и остальная часть синтаксиса класса ES6 теперь поддерживаются во всех основных браузерах, кроме Internet Explorer (http://caniuse.com/#search=es6), и если вы используете транспилер вроде Babel, вы можете использовать его в любом браузере. Большинство пользователей React уже используют Babel для пересылки своего JSX, поэтому сайты React (например, Redux TodoMVC) принимают это как должное. Вы можете узнать больше о static
здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static.
В случае static propTypes
propTypes должны быть объявлены самим классом, а не экземпляром класса. Другими словами, если вы используете апатридов компоненты:
function Foo() {
this.PropTypes = somePropTypes; // bad
return <div></div>;
}
Foo.PropTypes = somePropTypes; // good
При использовании классов ES6, эквивалент Foo.PropTypes = somePropTypes
является:
class Foo extends React.Component {
static PropTypes = somePropTypes;
}
Как примечание стороны, способность определять свойства в классе подобное не существует в любом браузере (пока): вам нужен транспилер, такой как Babel с плагином transform-class-properties
.
«Надеюсь, я смогу удалить этот пост». Вам не нужно. Нападение на ваш счет из трех отрицательных голосов незначительно, и только потому, что трем людям не понравился ваш вопрос, это не значит, что другие люди не найдут этот вопрос полезным. Любой, кто использовал SO на некоторое время, имеет по крайней мере один вопрос, который им немного неловко спрашивать (включая меня), но весь смысл этого места - помочь людям учиться, и даже «плохие» вопросы могут это сделать. – machineghost
@machineghost Спасибо. На самом деле, я прочитал несколько javascript-документов. Я не нашел свойство 'static'. Возможно, я не внимательно прочитал документы. конечно, 'static' очень часто встречается на других языках. – BAE