所以当新消息从信号器传入时,我试图更新我的状态,但是当控制台记录状态变量时,它是空的。
const [posts, setPosts] = useState([]);
useEffect(() => {
const results = await myApiCall();
setPosts(results);
}, []);
useEffect(() => {
websocket.connection.off(‘OnPostCreated’, (data) => {
console.log(posts);
});
websocket.connection.on(‘OnPostCreated’, (data) => {
console.log(posts);
});
}, [posts]);
我从控制台日志得到的响应是一个空数组。我知道帖子不是空的,因为我在我的页面上看到了帖子。如果我用 setPosts(data)
替换控制台日志,它会将所有帖子替换为从信号器返回的帖子。关于为什么在 on 回调中帖子显示空与被填充的想法?谢谢
答案 0 :(得分:0)
看看 react-use-signalr 这会照顾你的状态和钩子 ;) https://github.com/pguilbert/react-use-signalr