Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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组件重新呈现,是否意味着该组件中的所有代码都重新运行?_Reactjs - Fatal编程技术网

Reactjs 如果react组件重新呈现,是否意味着该组件中的所有代码都重新运行?

Reactjs 如果react组件重新呈现,是否意味着该组件中的所有代码都重新运行?,reactjs,Reactjs,我很难理解重新渲染的反应。如果发生状态更改并且重新呈现是计划,那么重新呈现是否仅在该组件的所有代码运行后才发生 class App extends Component { state = { result:[], isLoading:true, isActive:"", currentPage:1, } render(){ return( <div>

我很难理解重新渲染的反应。如果发生状态更改并且重新呈现是计划,那么重新呈现是否仅在该组件的所有代码运行后才发生

class App extends Component {
    state = {
      result:[],
      isLoading:true,
      isActive:"",
      currentPage:1,
    }
    render(){
        return(
            <div>
                <Child1/>
                <Child2 name={this.isActive}/>
            </div>
        )
    }
}

class Child2 extends PureComponent{
    constructor(props){
        super(props)
    }
    getResult = async(query='pasta')=>{
        console.log("this log loop finitely")
        this.setState({
            property1: newValue
          })
    }
    render(){
        this.getRecipe('pizza');
        return(
            <div>

            </div>
        )
    }
}
类应用程序扩展组件{
状态={
结果:[],
孤岛加载:是的,
isActive:“,
当前页面:1,
}
render(){
返回(
)
}
}
类Child2扩展了PureComponent{
建造师(道具){
超级(道具)
}
getResult=async(query='意大利面')=>{
log(“此日志循环有限”)
这是我的国家({
属性1:新值
})
}
render(){
这个.getRecipe(“比萨饼”);
返回(
)
}
}

我注意到console.log遇到了一个无限循环

您不应该在渲染函数中使用
this.setState()
。对
状态的每次更改
都会导致重新渲染,这将使组件处于无限循环中。
您可以考虑将状态更改移动到<代码>组件-Debug更新/代码>或其他更合适的生命周期方法。

< P> <代码> RANDER()>代码>方法在每个状态更改之后执行,构造函数仅在组件安装时执行。
查看

是否可以添加代码片段,这将有助于详细了解问题。如果使用componentDidUpdate,将在重新渲染时执行渲染方法。setState()是否是调出数据的唯一方法,例如,我在componentDidUpdate上有一个返回值的函数,如何从componentDidUpdate中获取值?我不太理解这个问题,但您可以在
componentDidUpdate
中调用
setState
。只需确保在
if
子句中执行,这样它就不会导致无限循环。