Подтвердить что ты не робот

Реагировать: почему static propTypes

Я смотрю коды redux todomvc. Каково ключевое слово static в static propTypes? Благодаря

UPDATE

Подумайте, почему вниз вниз? Эта статья слишком проста? Комментарии приветствуются. Благодарю. Надеюсь, я смогу удалить этот пост.

4b9b3361

Ответ 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 не являются уникальными для экземпляра компонента. Они также не меняются на один компонент. Поэтому для них имеет смысл быть статическим членом класса.