我在React还是很新,但是我一直在慢慢地学习,遇到了一些我坚持的事情。
我正在尝试在React中构建一个“计时器”组件,说实话,我不知道我是否做得正确(或有效)。在下面的代码中,我将状态设置为返回对象,{ currentCount: 10 }
并且一直在与componentDidMount
,玩弄componentWillUnmount
,render
并且我只能使状态从10倒数到9。
分两部分的问题:我怎么了?而且,有没有一种更有效的方式来使用setTimeout(而不是使用componentDidMount
&componentWillUnmount
)?
先感谢您。
import React from 'react';
var Clock = React.createClass({
getInitialState: function() {
return { currentCount: 10 };
},
componentDidMount: function() {
this.countdown = setInterval(this.timer, 1000);
},
componentWillUnmount: function() {
clearInterval(this.countdown);
},
timer: function() {
this.setState({ currentCount: 10 });
},
render: function() {
var displayCount = this.state.currentCount--;
return (
<section>
{displayCount}
</section>
);
}
});
module.exports = Clock;
this.timer.bind(this)
this.timer使其工作了
class Clock extends Component
会自动绑定方法,但不会自动绑定。因此,是否需要绑定取决于您如何创建组件。
bind(this)
不再需要,React现在可以自行执行。