Reactjs React.js inifinite循环在useEffect中,如果我尝试删除警告
我让代码正常工作的唯一方法是生成警告。如果我尝试修复警告,它会将useffect发送到一个无限循环中。这是因为我正在更新useEffect中的状态,就像这样。。。如何在没有警告的情况下修复此问题Reactjs React.js inifinite循环在useEffect中,如果我尝试删除警告,reactjs,state,use-effect,Reactjs,State,Use Effect,我让代码正常工作的唯一方法是生成警告。如果我尝试修复警告,它会将useffect发送到一个无限循环中。这是因为我正在更新useEffect中的状态,就像这样。。。如何在没有警告的情况下修复此问题 const CombineRemainderData = (props) => { const {remainderData, setAllHistoricalData, allHistoricalData, devices} = props useEffect(() =>
const CombineRemainderData = (props) => {
const {remainderData, setAllHistoricalData, allHistoricalData, devices} = props
useEffect(() => {
// doing stuff then setting state like below. I left out this and denoted it as newState below.
setAllHistoricalData({...allHistoricalData, newState: newState, keys: devices})
}, [remainderData, setAllHistoricalData, devices])
}
警告要求将allHistoricalData添加到依赖项数组中,但由于明显的原因,这会导致无限循环。如何以正确的方式删除此警告?一种方法是在状态设置程序中使用回调函数: useEffect=>{ setAllHistoricalDataallHistoricalData=>{ …所有历史数据, newState:newState, 关键:设备 }; },[remainderData,setAllHistoricalData,设备]
一种方法是在状态设置器中使用回调函数: useEffect=>{ setAllHistoricalDataallHistoricalData=>{ …所有历史数据, newState:newState, 关键:设备 }; },[remainderData,setAllHistoricalData,设备] 试试这个:
useEffect(() => {
// other code
...
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
试试这个:
useEffect(() => {
// other code
...
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
它是在父组件中定义的,又名另一个js文件是在父组件中定义的,又名另一个js文件,这就是它。我只是不明白为什么,但我可以研究一下。使用data=>…数据是一条可行之路。谢谢,我编辑了一下,想让你更清楚一点。您可以将setAllHistoricalData函数传递给另一个函数,该函数将当前数据作为参数。我只是不明白为什么,但我可以研究一下。使用data=>…数据是一条可行之路。谢谢,我编辑了一下,想让你更清楚一点。您可以向setAllHistoricalData函数传递另一个函数,该函数将当前数据作为参数