繁体   English   中英

为什么我的可重用组件不能与“ setInterval”一起使用?

[英]Why my reusable component doesn't work with “setInterval”?

这是我的<Loader />组件。 我正在这样做,所以我可以传递正在渲染的文本和速度作为道具。 该代码更有意义:

class Loader extends Component {
  constructor(props) {
    super(props);
    this.state = {
      text: props.text
    }
  }
  componentDidMount () {
    const stopper = this.props.text + '...';
    this.interval = window.setInterval(function(){
      if (this.state.text === stopper) {
        this.setState(function () {
          return {
            text: this.props.text
          }
        })
      } else {
        this.setState(function (prevState) {
          return {
            text: prevState.text + '.'
          }
        })
      }
    }.bind(this), this.props.speed)
  }

  componentWillUnmount () {
    console.log('cleared interval')
    window.clearInterval(this.interval)
  }

当组件卸载时,我收到正在记录的消息。 我没有收到任何错误,并且我的组件无法正常工作。 仅当我希望动画具有三个点时才显示“正在加载”。

哦,这里是道具:

Loader.propTypes = {
  text: PropTypes.string.isRequired,
  speed: PropTypes.number.isRequired,
}

Loader.defaultProps = {
  text: 'Loading',
  speed: 300,
}

我将文本渲染为{this.props.text}未在我的render方法中声明。 现在一切都好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM