问题描述
handleCreate = (data) => {
const { wifi } = this.state;
this.setState({
wifi: wifi.concat({ id: this.id++,...data })
})
}
componentDidMount(){
this.handleCreate();
}
render(){
const client = Tcpsocket.createConnection({
port: 80,host: '192.168.4.100',tls: false,interface: 'wifi',localAddress: '192.168.4.101',},() => {
client.write('APPSETTING WIFI START');
});
client.on('data',function(data) {
//console.log('message was received',data);
var strData="";
let dataLen = data.length;
for(var i=0; i<dataLen; i++){
strData+=String.fromCharCode(data[i]);
//console.log('message is',String.fromCharCode(data[i]));
}
console.log('message is',strData);
this.handleCreate(strData)
//client.end();
//console.log('message is',data['data']);
});
}
我想动态地将服务器中的数据保存到this.state中。 但是,我在控制台=> TypeError中收到消息:this.handleCreate不是函数。 (在“ this.handleCreate(strData)”中,“ this.handleCreate”未定义)
有什么办法解决这个问题?
解决方法
我认为这在类定义内。如果不是,您认为this
指的是什么?
在定义类成员(例如handleCreate
)时不要使用箭头功能。那不能正常工作。
在事件处理程序client.on
中,您应该使用箭头函数,因为这将正确捕获this
。在您当前的代码中,this
没有引用您期望的对象。实际值取决于事件处理程序的调用方式。
尝试将 client.on
回调作为箭头函数而不是普通函数回调。