AboutHeader.jsx:21 Неперехваченная ошибка типа: this.setState не является функцией

#reactjs

#reactjs

Вопрос:

Я пытаюсь выполнить изменение состояния, которое изменит имя класса после setTimeout, однако я продолжаю получать сообщение «AboutHeader.jsx: 21 Неперехваченная ошибка типа: this.setState не является функцией» Я пробовал привязку (this), но это все равно не сработает. импортируйте React из ‘react’;

требуется (‘../../ таблицы стилей/компонент/AboutHeader.scss’);

экспорт класса AboutHeader по умолчанию расширяет React.Компонент {

 constructor() {
    super()
this.timeDelay = this.timeDelay.bind(this);
    this.state = {
        class: "about-header-wrapper-hidden"
    }
}

componentDidMount() {
console.log("mounted");
    this.timeDelay();
}
 

timeDelay() {
setTimeout(функция updateState(){this.setState({class: «about-header-wrapper»})}, 1000);
console.log(«Сработала задержка времени»);
}

 render() {
    return (
        <section className={this.state.class}></section>
    )
}
 

}

Ответ №1:

Вы должны .bind(this) на setTimout() . Вот ваш код в JSBin с привязкой this . Если вы удалите его, он выдаст сообщение об ошибке.

 setTimeout(function updateState() {
  this.setState({ class: "about-header-wrapper" })
}.bind(this), 1000); 
 

Комментарии:

1. Спасибо. Это сработало. Я знал, что должен связать «это», но у меня ничего не получалось. Так что большое вам спасибо.