Javascript 如何将JS代码放入React组件中
我有一个React组件和我想放在其中的JS代码。我试过了,但完全搞砸了。有人知道怎么做吗 mycomponent.jsJavascript 如何将JS代码放入React组件中,javascript,reactjs,sockets,components,Javascript,Reactjs,Sockets,Components,我有一个React组件和我想放在其中的JS代码。我试过了,但完全搞砸了。有人知道怎么做吗 mycomponent.js import React from "react"; import Navbar from "./Navbar"; const Chat = props => ( <div> //Place for my Js code </div> ); export de
import React from "react";
import Navbar from "./Navbar";
const Chat = props => (
<div>
//Place for my Js code
</div>
);
export default Chat;
javascript代码
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('message', function(msg){
console.log(msg);
document.getElementById("message").innerHTML = msg;
});
</script>
您可以将代码包装在useEffect钩子中。一旦安装组件,它将被触发 您必须从npm安装sockito.io。运行>npm i socket.io-client 也添加了一些改进
import React, { useEffect, useRef } from "react";
import io from "socket.io-client";
const Chat = props => {
const socket = useRef(null);
useEffect(() => {
connectToSocket();
return () => {
if (socket.current) {
socket.current.disconnect()
}
}
}, []);
function connectToSocket() {
console.log("Conneting to socket");
socket.current = io('http://localhost:5000');
socket.current.on('connect', () => console.log("Connected"));
socket.current.on('disconnect', () => connectToSocket());
socket.current.on('message', function (msg) {
console.log(msg);
document.getElementById("message").innerHTML = msg;
});
}
return (<div>
Some data
<div id="message"></div>
</div>)
}
export default Chat;
您应该从npm导入socket.io,而不是在React中使用脚本标记。代码可以这样添加
import io from "socket.io";
const Chat = props => {
React.useEffect(() => {
let socket = io();
socket.on('message', function(msg) {
console.log(msg);
document.getElementById('message').innerHTML = msg;
});
}, []);
return <div></div>;
};
该效果只需运行一次套接字设置代码。所以依赖关系数组应该设置为[]。否则,此代码将在每次渲染时运行。@谢谢。那么,这个链接应该在哪里呢?@Sohail好的,我使用了你的代码,运行了服务器,但我在控制台中遇到了以下错误:加载资源失败:net::ERR\u NAME\u未解析并轮询xhr.js:267 GET http://%3Csocket%20url%3E/socket.io/?EIO=3&transport=polling&t=n38net::ERR\u NAME\u未解析_RESOLVED@Sohail使用的var套接字=io';我没有IDE,我应该在这里使用哪个URL。我不断得到错误:轮询xhr.js:267 POST 404 Not FoundLet我们。