Доступ к статическим полям внутри статических методов
У меня есть класс, который сводится к
class MyClass {
static someField = "somestring";
static someMethod() {
[...]
MyClass.someField;
[...]
}
}
export default MyClass;
Проблема в том, что я не могу получить доступ к someField
внутри someMethod
, Когда утешает someField
это просто не определено.
Я использую Babel 6.x State:0 для перехода на ES5
Актуальный релевантный исходный код
import s from './Button.scss'; // 's' is an object
class Button extends Component {
static propTypes = {
[...]
};
static defaultProps = {
[...]
};
static buttonStylePrefix = 'style-'; // eslint-disable-line
/**
* Get the possible styles for a button
*
* @return {string[]} The button styles
*/
static getButtonStyles() { // eslint-disable-line
const classes = Object.keys(s);
const styles = [];
for (let i = 0; i < classes.length; i++) {
const styleClass = classes[i];
console.log(typeof styleClass); // prints "string"
console.log(Button.buttonStylePrefix); // print "undefined"
if (styleClass.startsWith(Button.buttonStylePrefix)) {
styles.push(styleClass.substring(Button.buttonStylePrefix.length));
}
}
return styles;
}
[...]
}
1 ответ
Проблема не в доступе к статическому свойству, которое работает как положено (ClassName.staticField
), но запускается с не определяется для строк при компиляции с помощью babel. Сообщение об ошибке также является исключительно загадочным, что приводит к путанице.