Reactjs 正在将套接字io与react连接,无法获取数据
我正在尝试从React连接一个组件,通过socket.io从服务器获取一些实时更新数据 在我的express server中,我有以下功能: (部分但相关部分) 然后,我在客户端有一个helper api.js文件:Reactjs 正在将套接字io与react连接,无法获取数据,reactjs,socket.io,Reactjs,Socket.io,我正在尝试从React连接一个组件,通过socket.io从服务器获取一些实时更新数据 在我的express server中,我有以下功能: (部分但相关部分) 然后,我在客户端有一个helper api.js文件: import openSocket from 'socket.io-client'; const socket = openSocket('http://localhost:3000'); function subscribeToTimer(cb) { socket.on('
import openSocket from 'socket.io-client';
const socket = openSocket('http://localhost:3000');
function subscribeToTimer(cb) {
socket.on('timer', timestamp => cb(null, timestamp));
socket.emit('subscribeToTimer', 1000);
}
export { subscribeToTimer }
然后,我将此方法导入我的react组件:
import { subscribeToTimer } from './api';
然后,我创建一个状态并尝试更新它:
const [timestamp, setTimeStamp] = useState('no timestamp yet')
useEffect(() => {
subscribeToTimer((err, tstamp) => setTimeStamp);
console.log(timestamp);
});
在服务器端,我得到控制台日志:
client is subscribing to timer with interval 1000
在客户端it console.logs上:
'no timestamp yet'
我没有从套接字获取更新。知道我做错了什么吗?我正在遵循一个教程,并将其纳入我的react项目。我相信您的问题就在这里:
useEffect(() => {
subscribeToTimer((err, tstamp) => setTimeStamp(tstamp));
console.log(timestamp);
}
你没有给你的州分配任何东西我相信你的问题在这里:
useEffect(() => {
subscribeToTimer((err, tstamp) => setTimeStamp(tstamp));
console.log(timestamp);
}
您没有将任何内容分配给您的状态将
tstamp
传递给setTimeStamp
函数,您只是传递函数的引用
试试这个
const [timestamp, setTimeStamp] = useState('no timestamp yet')
useEffect(() => {
subscribeToTimer((err, tstamp) => setTimeStamp(tstamp));
console.log(timestamp);
});
将
tstamp
传递给setTimeStamp
函数,您只是传递函数的引用
试试这个
const [timestamp, setTimeStamp] = useState('no timestamp yet')
useEffect(() => {
subscribeToTimer((err, tstamp) => setTimeStamp(tstamp));
console.log(timestamp);
});