React组件没有重新渲染?

时间:2016-07-19 16:24:47

标签: javascript reactjs

我有一个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组件呈现正确的信息?

0 个答案:

没有答案