我具有单击按钮时起作用的功能。 在添加setInterval方法之前,该函数运行良好,添加之后,它显示错误:_this2.setState不是函数
这是功能:
getWifiNetworksOnPress() {
setInterval(function timer() {
console.log("hello world");
wifi.loadWifiList(
wifiStringList => {
console.log(wifiStringList);
var wifiArray = JSON.parse(wifiStringList);
this.setState({
wifiList: wifiArray
});
},
error => {
console.log(error);
}
);
}, 3000);
}
这是按钮:
<Button onPress={this.getWifiNetworksOnPress.bind(this)}>
get location
</Button>
我为这个问题找到的所有答案都是将.bind(this)添加到onPress,但没有用。你知道如何解决这个问题吗?
答案 0 :(得分:1)
为什么不在setInterval函数中使用粗箭头函数? 这应该起作用:
expiration
和
getWifiNetworksOnPress = () => {
setInterval(() => {
console.log("hello world");
wifi.loadWifiList(wifiStringList => {
console.log(wifiStringList);
var wifiArray = JSON.parse(wifiStringList);
this.setState({
wifiList: wifiArray
});
}, error => {
console.log(error);
});
}, 3000);
}
答案 1 :(得分:0)
尝试使用const _this
来添加对类的引用,例如以下代码:
getWifiNetworksOnPress() {
const this_ = this;
setInterval(function timer() {
console.log("hello world");
wifi.loadWifiList(
wifiStringList => {
console.log(wifiStringList);
var wifiArray = JSON.parse(wifiStringList);
this_.setState({
wifiList: wifiArray
});
},
error => {
console.log(error);
}
);
}, 3000);
}