我有一个react组件,用于在创建某些内容的某个时间限制内显示按钮。
var UndoButton = React.createClass({
getDefaultProps: function() {
return ({
timeWindow: 900
})
},
getInitialState: function() {
return ({
commentAge: this.props.timeWindow + 1
})
},
determineDeletable: function() {
this.setState({
commentAge: this.commentAge()
});
},
componentDidMount: function() {
this.determineDeletable()
this.timer = setInterval(this.determineDeletable, 1000);
},
componentWillUnMount: function() {
clearTimer(this.timer);
},
commentAge: function() {
return Math.floor(new Date().getTime() / 1000) - this.props.created_at;
},
inPeriod: function() {
return this.timeRemaining() > 0;
},
timeRemaining: function() {
return this.props.timeWindow - this.state.commentAge;
},
render: function() {
if (!this.inPeriod()) { return false }
return (
<a href='#' className='btn btn-xs btn-default'>Undo Comment ({this.timeRemaining()}s)</a>
)
}
});
现在,这会在时间窗口内完美呈现按钮。但是,即使状态每秒更新一次,渲染功能似乎也没有运行,因为剩余时间计数不会改变。此外,当按下时间窗口时,按钮不会消失。
那么,什么阻止了这个React组件呈现正确的信息?