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
子句中执行,这样它就不会导致无限循环。