Как вызвать setTimeOut для класса компонента - PullRequest
0 голосов
/ 27 декабря 2018

После вызова setTimeOut (Вопрос, 3000) я получаю сообщение об ошибке «Не удается вызвать класс как функцию».«Вопрос» должен быть классом, чтобы получить методы жизненного цикла, которые получают классы.

Единственный ответ, который я нашел до сих пор, - это включить «extends React.Component» в класс, который у меня есть.

import React from 'react';
import Question from './Question';

setTimeout(Question, 3000);


function Congratulations(props) {
    return(
        <div>
        <h1>Congraulations you are the champion.</h1>
        <h2>Your Score: {props.score}</h2>
    </div>
    )
}  
export default Congratulations;

Первые несколько строк класса компонента Question следуют.

export default class Question extends React.Component {
constructor(props) {
    super(props);

Я хотел бы, чтобы Вопрос появился в DOM через 3 секунды.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

вы можете использовать в методе componentdidmount и установить состояние для показа через 3 секунды.В методе рендеринга вы можете выполнить рендеринг, только если show имеет значение true.

В методе конструктора создайте состояние с show = false.

В componentDidMount вы можете создать

setTimeOut(() => this.setState({ show: true}), 3000)

В методе рендеринга вы можете выполнить рендеринг с этим состоянием

{
 show &&
  // render what you want
}
0 голосов
/ 27 декабря 2018

Тайм-аут не является вашей проблемой, просто у вас нет установочного кода Reacts.Проверьте метод рендеринга в React-Dom. Вам нужно обернуть код настройки в функцию, а затем запустить эту функцию с помощью setTimeout.Даже компонент функции React мало что сделает, если вы вызовете его напрямую, как это сделал бы setTimeout.

...