Почему setTimeout возвращает число вместо текста? ReactJS - PullRequest
0 голосов
/ 06 сентября 2018

Я работаю с Reactjs и мне нужно показать сообщение, используя setTimeout, но оно всегда возвращает мне номер. Кто-нибудь знает причину?

Это мой код:

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

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

Спасибо!

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Это асинхронный, и вы не можете ожидать его возвращаемое значение. Число - это идентификатор setTimeout, используемый для очистки setTimeout.

0 голосов
/ 06 сентября 2018

Я полагаю, вы делаете неправильный путь.Как я понимаю, вы хотите что-то еще.Я приведу один пример, это может помочь.

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; //
  }
}
0 голосов
/ 06 сентября 2018

Потому что именно это и должно быть.

setTimeout не приостанавливает выполнение на указанное время. Он планирует, что ваша функция появится позже, а затем возвращает значение (обычно это число), которое можно использовать для вызова этого расписания.

Функция, очевидно, не может вернуть значение из будущего .

...