Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React.js inifinite循环在useEffect中,如果我尝试删除警告_Reactjs_State_Use Effect - Fatal编程技术网

Reactjs React.js inifinite循环在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(() =>

我让代码正常工作的唯一方法是生成警告。如果我尝试修复警告,它会将useffect发送到一个无限循环中。这是因为我正在更新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函数传递另一个函数,该函数将当前数据作为参数