【问题标题】:Run event over socket通过套接字运行事件
【发布时间】:2020-07-03 11:39:50
【问题描述】:
我使用一个文件来获取套接字响应,然后我将响应导航到其他文件。
例如:
import socket from 'socket.io-client';
import { ShowModal } from '../components/Modal';
socket.on('message', function(data){
ShowModal(data);
})
但每次我得到以下错误:
错误:无效的挂钩调用。 Hooks 只能在函数组件内部调用
如何解决这个问题?
【问题讨论】:
标签:
reactjs
sockets
events
【解决方案1】:
你的答案是:
"只能在函数组件的主体内部调用钩子"
在您的情况下,这意味着在您的应用文件上使用 <ShowModal />。那么ShowModal大部分有以下内容:
EG:
import socket from 'socket.io-client';
class ShowModal extends Component {
_isMounted = false;
constructor(props) {
super(props);
this.state = {};
}
modal(data){
if(this._isMounted){
// Your Codes
}
}
componentDidMount() {
this._isMounted = true;
socket.on("message", data => this.modal(data));
}
render(){
// Put Your codes
return (
<>
</>);
}
}
export default ShowModal;