Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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
Javascript setState在更新嵌套子功能组件的状态时出错_Javascript_Reactjs - Fatal编程技术网

Javascript setState在更新嵌套子功能组件的状态时出错

Javascript setState在更新嵌套子功能组件的状态时出错,javascript,reactjs,Javascript,Reactjs,我尝试多次更新状态。我怎样才能做到这一点。 我已经从其他网站看到了下面的方法,但无法使用它 componentDidUpdate(prevProps, prevState) 错误:错误:超过最大更新深度。当组件在componentWillUpdate或componentDidUpdate内重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 state={ incobj:[], expenobj:[],

我尝试多次更新状态。我怎样才能做到这一点。 我已经从其他网站看到了下面的方法,但无法使用它

componentDidUpdate(prevProps, prevState)
错误:错误:超过最大更新深度。当组件在componentWillUpdate或componentDidUpdate内重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环。

state={
        incobj:[],
        expenobj:[],
        totalinc:0,
        totalexp:0,
        click:0
    }


    takeInp=(e)=>{
        if(e[0]==="Income"){
            this.setState({
                incobj:this.state.incobj.concat( [e]),
                totalinc:this.state.totalinc+parseInt(e[2])
            }) 
        }
        if(e[0]==="Expense"){
            this.setState({
                expenobj:this.state.expenobj.concat( [e]),
                totalexp:this.state.totalexp+parseInt(e[2])
            })
        }
    }

    deldata=(d)=>{
        let num=parseInt( d.substr(1,d.length));
        if(d.charAt(0)==="i"){
            this.setState({
                click:this.state.click+1
             })
             console.log(this.state.click, 'increased')
        }
        if(d.charAt(0)==="e"){
            this.setState({
                click:this.state.click+1
             })
             console.log(this.state.click, 'increased')
        }
       
    }
    


  


  

这是由无限循环引起的。您的
App
组件是
Income
的父级,并将更新父级的
deldata
方法传递给它。子功能组件具有在每次渲染时执行的以下代码段:

if (Remov) {
    props.todel(Remov);
}
Remov
为truthy时,它会更新父级的状态。这会导致子对象的重新加载。它更新父对象的状态。等等


不要在功能组件中触发
todel
,即使是有条件的。仅在响应某些事件(onClick等)时调用此函数。

您需要向我们展示更多的代码,编写代码时的提示是使用一个变量来描述它们正在执行的操作。现在,你的代码没有一个是有意义的。@CyrusZei我也给了沙盒链接。当然,我会编辑所有变量名称,现在我删除了useState,并用“let”声明了remov,以使用onclik更新它。它正在工作,我已经完成了一半。