Pull to refresh

Comments 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 я нашёл. Может плохо искал?

UFO landed and left these words here
Это геттеры то? Со статическими переменными?
UFO landed and left these words here

Ссорян, согласен — короче, красивее и читабильнее. Просто хотел сказать, что если уже ES6, то неплохо бы заюзать еще и геттеры вместо,


MyComponent.propTypes = {
  children: React.PropTypes.element.isRequired
};
Можно считать, что красивее в том плане, что с геттером оно явно read-only (ну, условно) и будет объявлено в теле класса, а не где-то сбоку. И на свежем ES это те же три строчки все равно:

static get propTypes() => {
    prop: React.PropTypes.string
}

Невалидный у вас код. Причём совсем… Стрелочные функции не имеют имён. А если уж и предположить, что имеют, то { является куском блока кода, а не литералом объекта. Надо тогда {} обернуть ещё в ().

UFO landed and left these words here

А я и не говорил, что это код примут. Но для этого варианта нужен return и ещё одни скобочки фигурные, чтобы этот код был валиден. А ещё нужно отсутствие этой дурацкой стрелки, которая там совершенно ненужна, как вы и сказали.

Да, вы правы, невалидный.
Но это не отменяет других пунктов.
В последних версиях реакта они изменяют пакеты. В связи с этим можно наблюдать ворнинг в консоли:
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.
Only those users with full accounts are able to leave comments. Log in, please.