当特定状态更改时,我正在try 运行方法.然而,我得到了"达到了最大更新深度".这没有意义,因为该函数将监听从状态A到更新状态B的更改.我try 过做setState(prev => { ...prev, new })
个这样的事情.然而,我需要做的不仅仅是将新数据与之前的数据保持一致.
这是我需要运行的函数:
const _updateGraph = (_state: { x: any; y: any; z: any; }) => {
let X = parseFloat("" + _state.x.toFixed(3));
let Y = parseFloat("" + _state.y.toFixed(3));
let Z = parseFloat("" + _state.z.toFixed(3));
let counter = graphState.counter;
let stateDataX: { x: number, y: number }[] = graphState.dataX;
let stateDataY: { x: number, y: number }[] = graphState.dataY;
let stateDataZ: { x: number, y: number }[] = graphState.dataZ;
setGraphState({
dataX: stateDataX.concat({ x: counter, y: X }),
dataY: stateDataY.concat({ x: counter, y: Y }),
dataZ: stateDataZ.concat({ x: counter, y: Z }),
dataObj: { x: X, y: Y, z: Z },
counter: counter + 1
});
};
我试图使用的挂钩:
useEffect(() => {
_updateGraph({ x, y, z });
}, [{ x, y, z }]);
useEffect
正在监听{ x, y, z }
的更新以更新graphState
.这如何导致无限循环?
我唯一能想到的就是重写更新函数,这样我就可以像setState(prev => { ...prev, new })
一样使用setState
.