我想从服务器显示实时数据数组(JSON形式)。
Blogs
在useEffect中,console.log(valueA)在起作用,但是只有setValueA(cl)在起作用。 我认为这是因为'cl'更改时未调用useEffect。
答案 0 :(得分:3)
问题是React并不知道您的cl
变量已更改(因为它不是状态)
此外,您不需要cl
。
只需将初始连接包装在useEffect中,并在获取数据时调用setValueA
。
function ServerTest(){
const queue = v4();
const [valueA, setValueA]= useState()
useEffect(() => {
const client = createClient();
client.onConnect = function () {
subscribe(client, 'admin', queue, (payload:any) => {
if(payload.Conversations!==null){
setValueA(payload.Conversations.map((item:any)=>item.name))
}
});
publish(client, 'api', 'admin', queue, {});
}
client.activate();
}, [])
return (
<div>A: {valueA} </div>
)
}