useEffect未调用适当的时间,因此useEffect中的useState无法正常工作

时间:2020-07-13 01:29:38

标签: reactjs react-hooks setstate

我想从服务器显示实时数据数组(JSON形式)。

Blogs

在useEffect中,console.log(valueA)在起作用,但是只有setValueA(cl)在起作用。 我认为这是因为'cl'更改时未调用useEffect。

1 个答案:

答案 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>
    )
}