Я смотрю коды redux todomvc. Каково ключевое слово static в static propTypes?
Благодаря
UPDATE
Подумайте, почему вниз вниз? Эта статья слишком проста? Комментарии приветствуются. Благодарю. Надеюсь, я смогу удалить этот пост.
Ответ 1
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.
Ответ 2
propTypes не являются уникальными для экземпляра компонента. Они также не меняются на один компонент. Поэтому для них имеет смысл быть статическим членом класса.