我正在尝试将SocketIO客户端集成到我的项目中,但由于我已经以同构方式设置了我的项目,所以遇到了一些问题。在将socket文件包含在我的基本HTML中后,我尝试在其中一个组件的componentdidmount中调用let socket = io();
,但最初在控制台中记录它时它为未定义。当我路由到另一个组件并返回到该带有socket变量的组件时,它就会填充一些数据。我想我的重点是我的组件没有初始化socket,它似乎需要等待,我该如何解决这个问题?
Component.jsx
componentDidMount() {
let socket = io();
console.log(socket);
}
基础.html
<!doctype html>
<html lang="">
<head>
<title>TITLE</title>
META
LINK
</head>
<div class="app">CONTENT</div>
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-X', 'auto');
ga('send', 'pageview');
</script>
<script type="text/javascript" charset="utf-8" src="/assets/app.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
</body>
</html>
这个很好用,例如当有人从服务器连接时,它会发出用户正在连接和断开服务器的信号,但是客户端操作让我感到困惑。