为什么setTimeout返回一个数字而不是文本? ReactJS

问题描述 投票:0回答:3

我正在使用Reactjs,我需要使用setTimeout显示一条消息,但它总是向我返回一个数字。有谁知道原因?

这是我的代码:

  messageError = () => {
       return <h1>Error!</h1>
  }

render() {
  return (
   ...
     { this.props.error.code != undefined ?
                            setTimeout(() => { this.messageError() }, 3000) : null }

谢谢!

javascript reactjs settimeout
3个回答
2
投票

我猜你做错了。正如我的理解,你想要别的东西。我给你一个例子,它可能会有所帮助。

class MyComponent {
  state = {
    error: false,
  }

  componentDidMount() {
    setTimeout(() => {
      this.setState({
        error: true,
      })
    }, 3000);
  }

  renderMessageError() {
    return <h1>Error</h1>
  }

  render() {
    if (this.state.error) {
      return this.renderMessageError();
    }

    return null; //
  }
}

1
投票

因为那是应该做的。

setTimeout不会暂停执行指定的时间。它会调度您的函数以便稍后发生,然后返回一个可用于调用该调度的值(通常是一个数字)。

该功能显然无法从未来返回值。


1
投票

这是异步的,你不能指望它的返回值。该数字是setTimeout的ID,用于清除setTimeout。

© www.soinside.com 2019 - 2024. All rights reserved.