我是 ReactJS 新手,遇到错误“this.setState 不是函数”。
constructor() {
super();
this.state = {
visible: false,
navLinesShow: true
};
this.navOpen = this.navOpen.bind(this)
}
navOpen() {
this.setState({
navStatus: "navShow",
navLinesShow: false
});
if ( this.state.visible === false) {
setTimeout(function (){
this.setState({
visible: true
});
}, 3000);
}
我已将 this.navOpen = this.navOpen.bind(this) 添加到构造函数中。所以我猜问题出在 setTimeout 函数上。
可能的修复是什么?
谢谢。
最佳答案
是的,问题是 setTimeout 函数“this”中的 setTimeout 引用了函数本身:所以解决方案是典型的 var that = this
:
navOpen() {
this.setState({
navStatus: "navShow",
navLinesShow: false
});
if ( this.state.visible === false) {
var that = this;
setTimeout(function (){
that.setState({
visible: true
});
}, 3000);
}
关于javascript - ReactJS : this. setState 不是一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124293/