Этот код ReactJS действителен и дает желаемый результат:
import React from 'react'
class MyComponent extends React.Component {
state = {'x': 1}
render() {
console.info('render: this.state:', this.state)
return <div>{this.state.x}</div>
}
}
export default MyComponent
Но этот очень похожий код ES6 вызывает ошибку при работе с Node.js:
class MyComponent {
state = {'x': 1}
render() {
console.info('render: this.state:', this.state)
return <div>{this.state.x}</div>
}
}
let c = new MyComponent()
c.render()
Вот ошибка:
$ node foo.js
/Users/lone/foo.js:2
state = {'x': 1}
^
SyntaxError: Unexpected token =
Почему второй пример приводит к ошибке, когда первый пример отлично работает с ReactJS?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Этот синтаксис еще не является стандартной частью javascript (в настоящее время это предложение 3 этапа). Его можно использовать с помощью Плагин свойств класса Babel для преобразования в стандартный javascript. Скорее всего, ваш реактивный проект включает этот плагин, поэтому он работает для вас в реакции. Приложение Create-React, например, включает плагин. Без плагина реакция также не может использовать этот синтаксис.
Как уже упоминалось, это еще не стандарт, и в create-react-app есть плагин для транспиляции babel. Но вы можете заставить его работать, используя флаг Node >= 10.9. Флаг --js-flags = "--harmony".
Это не код "ES6". Технически это еще даже не ES.