在react中使用socket.io-client时切换compenent,内部的this指向都会被改变,是什么造成的?
我的socket.on注册在compnentDidMount中,当次component被移除时没有被销毁,并且回调时间内部的this指向被保留了,试图在componentDidMount顶部将this赋值给that,但是that.setState依旧不生效
在react中使用socket.io-client时切换compenent,内部的this指向都会被改变,是什么造成的?
我的socket.on注册在compnentDidMount中,当次component被移除时没有被销毁,并且回调时间内部的this指向被保留了,试图在componentDidMount顶部将this赋值给that,但是that.setState依旧不生效
5 回答8.4k 阅读
2 回答10.5k 阅读✓ 已解决
2 回答10.7k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
3 回答1.9k 阅读
1 回答4.7k 阅读✓ 已解决
可以将
socket
对window
,这样就变成一个全局的了,你可以随时修改他。建议将
socket
的onmessage
的值放到redux
的state
中,不要放到组件的state
中。如果只是在组件中使用
socket
,那么在componentWillUnmount
的时候将websocket close
掉。