Реагировать на статику с классами ES6
Работает ли объект statics с классами ES6 в React?
class SomeComponent extends React.Component {
render() {
// ...
}
}
React.statics = {
someMethod: function() {
//...
}
};
Что-то вроде выше дает мне метод undefined someMethod
, когда я делаю SomeComponent.someMethod()
Ответы
Ответ 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 (с момента его эксперимента)).
Ответ 3
statics
работает только для компонентов React, проверить документы.