Комментарии 20
static get propTypes () {
return {
prop: React.PropTypes.string
};
}
… если использовать getter-ы, просто так красивее.
static get propTypes () {
return {
prop: React.PropTypes.string
};
}
красивее?
static propTypes {
prop: React.PropTypes.string
}
Можно даже еще короче если импортировать PropTypes вначале
import React, { PropTypes } from 'react';
static propTypes {
prop: PropTypes.string
}
Тоже невалидно. Почитайте и поймёте.
Не понял, почему? Прекрасно работает.
Хм, странно, у меня не работает. Вы что в бабеле подключали? У меня es2015 стоит только. Может у вас какие-то stage?
Мой вопрос был в том, что дОлжно понять после прочтения про "static"?
Настройки Babel:
"babel": {
"presets": [
[
"latest",
{
"es2015": {
"modules": false
}
}
],
"react",
"stage-0"
],
Что в es2015 статичными у классов могут быть только методы, но не свойства… Вот так вот.
У вас стоит stage.
Должно работать, вроде :)
Что-то только такой способ использования static я нашёл. Может плохо искал?
Ссорян, согласен — короче, красивее и читабильнее. Просто хотел сказать, что если уже ES6, то неплохо бы заюзать еще и геттеры вместо,
MyComponent.propTypes = {
children: React.PropTypes.element.isRequired
};
static get propTypes() => {
prop: React.PropTypes.string
}
Невалидный у вас код. Причём совсем… Стрелочные функции не имеют имён. А если уж и предположить, что имеют, то {
является куском блока кода, а не литералом объекта. Надо тогда {} обернуть ещё в ().
Но это не отменяет других пунктов.
Warning: Accessing PropTypes via the main React package is deprecated. Use the prop-types package from npm instead.
Поэтому, теперь нужно делать так:
import PropTypes from 'prop-types';
export default class MyClass extends React.Component {
}
MyClass.propTypes = {
prop : PropTypes.number.isRequired,
}
Разумеется, это EcmaScript.
PropTypes — проверка типов в React