React useState 设置状态方法不触发

时间:2021-05-17 13:23:50

标签: reactjs react-router react-hooks single-page-application use-state

我在 React useState 方面遇到了一个相当具体的问题。我正在使用 useState 钩子声明新状态:

const [dialogData, setDialogData] = useState(null);

当我通过 setDialogData(newState) 设置新状态时,一切正常,直到调用任何 history.push()。之后,当我尝试使用 setDialogData 方法设置状态时,逻辑被忽略且不会被触发。例如对于这样的代码片段:

setDialogData((prev) => { 
    console.log('setDialogData entered');
    return newState;
}

不会打印“输入的setDialogData”。

我不确定这是否重要,但就我而言,setDialogData 在注册为 signalR 接收消息处理程序的回调方法中调用。

编辑 这是实际代码:

const handleOperationRequested = (response) => {
        setDialogData((prev) => {
            console.log('setDialogData entered');
            
            return {
                isOpen: true,
                id: response.id,
                name: response.name
            };
        });   
    };

handleOperationRequested 在 signalR 中注册为消息处理程序:

this.hubConnection.on('operationRequested', (res) => handleOperationRequested(res));

这是我能够展示的所有代码,因为公司隐私政策,但这是与该案例相关的代码中的所有内容。正如我所提到的,在调用 history.push() 中的 react-router-dom 之前,这是有效的。之后不再打印“setDialogData enter”,也不会更新状态。

0 个答案:

没有答案