Я просматриваю учебник Egghead по React и на одном из уроков нашел следующее объявление класса:
class StopWatch extends React.Component {
state = {lapse: 0, running: false}
render() {
const {lapse, running} = this.state
const buttonStyles = {
border: '1px solid #ccc',
background: '#fff',
fontSize: '2em',
padding: 15,
margin: 5,
width: 200
}
return (
<div style={{textAlign: 'center'}}>
<label style={{fontSize: '5em', display: 'block'}}>
{lapse}ms
</label>
<button style={buttonStyles}>{running ? 'Stop' : 'Start'}</button>
<button style={buttonStyles}>Clear</button>
</div>
)
}
}
Итак, глядя на код, мне было просто любопытно, что это за назначение вверху. Я просмотрел класс и расширил документацию по MDN, и там ничего не говорится о разрешении присваивания внутри объявления класса.
Кроме того, я попробовал это на примере кода, и он выдает ошибку:
class Square {
constructor(prop1, prop2) {
this.prop1 = prop1
this.prop2 = prop2
}
}
class Polygon extends Square {
constructor(prop1, prop2, prop3) {
super(prop1, prop2)
}
prop2 = prop3
render() {
console.log(prop2)
}
}
Итак... почему это работает?
prop2
является свойством класса, поэтому попробуйте получить доступ кthis.prop2
изrender
. Кроме того, что такоеprop3
вне конструктора? - person Tolsee   schedule 05.04.2018