#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. Спасибо. Это сработало. Я знал, что должен связать «это», но у меня ничего не получалось. Так что большое вам спасибо.