Пример из туториала:
var Timer = React.createClass({
getInitialState: function() {
return {
seconds: 0
};
},
componentDidMount: function() {
this.timer = setInterval(this.tick, 1000);
},
tick: function() {
this.setState({ seconds: this.state.seconds + 1 });
},
componentWillUnmount: function() {
clearInterval(this.timer);
},
render: function() {
return (
<h4> Уже прошло {this.state.seconds} секунд </h4>
);
}
});
ReactDOM.render(
<Timer />,
document.getElementById('mount-point')
);
Мой аналогичный, но не рабочий (почему?) пример:
export default class Timer extends Component {
constructor(props) {
super(props);
this.state = {
seconds: 0
}
}
componentDidMount() {
this.timer = setInterval(this.tick, 1000);
}
tick() {
this.setState({ seconds: this.state.seconds + 1 });
}
componentWIllUnMount() {
clearInterval(this.timer);
}
render(){
return(
<h4>Уже прошло {this.state.seconds} секунд</h4>
)
}
}
В консоле выдает ошибку TypeError: Cannot read property 'seconds' of undefined
в строке this.setState({ seconds: this.state.seconds + 1 });