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

Реагировать на статику с классами ES6

Работает ли объект statics с классами ES6 в React?

class SomeComponent extends React.Component {

  render() {
    // ...
  }

}

React.statics = {
  someMethod: function() {
    //...
  }
};

Что-то вроде выше дает мне метод undefined someMethod, когда я делаю SomeComponent.someMethod()

4b9b3361

Ответ 1

statics работает только с React.createClass. Просто объявите метод как метод статического класса:

class SomeComponent extends React.Component {

  static someMethod() {
    //...
  }

  render() {
    // ...
  }

}

Относительно

React.statics = { ... }

Вы буквально создаете свойство statics объекта React. Это свойство не магически расширяет ваш компонент.

Ответ 2

Хотя statics работает только для React.createClass, вы все равно можете писать статические методы в нотации ES6. Если вы используете ES7, вы также можете писать статические свойства.

Вы можете написать статику внутри классов ES6 + следующим образом:

class Component extends React.Component {
    static propTypes = {
    ...
    }

    static someMethod(){
    }
}

Или вне класса, например:

class Component extends React.Component {
   ....
}

Component.propTypes = {...}
Component.someMethod = function(){....}

Если вы хотите написать его как первое, тогда вам нужно установить stage: 0 на Babel (с момента его эксперимента)).