我正在尝试进行一个状态更改,它将在setTimeout之后更改className,但是,我一直得到一个“AboutHeader.jsx:21 Uncaught TypeError:this.setState不是一个函数”我试过绑定(这个)但它仍然行不通。 从'react'中导入React;
要求(” ../../样式表/组件/ AboutHeader.scss');
export default class AboutHeader扩展了React.Component {
constructor() {
super()
this.timeDelay = this.timeDelay.bind(this);
this.state = {
class: "about-header-wrapper-hidden"
}
}
componentDidMount() {
console.log("mounted");
this.timeDelay();
}
timeDelay(){ setTimeout(function updateState(){this.setState({class:“about-header-wrapper”})},1000); console.log(“timeDelay working”); }
render() {
return (
<section className={this.state.class}></section>
)
}
}
答案 0 :(得分:1)
您必须.bind(this)
上setTimout()
。绑定this
的{{3}}。如果删除它,则会抛出错误。
setTimeout(function updateState() {
this.setState({ class: "about-header-wrapper" })
}.bind(this), 1000);