Javascript 引用渲染条件中的方法

Javascript 引用渲染条件中的方法,javascript,reactjs,Javascript,Reactjs,我的渲染中有if-else条件,如下所示: if (this.state.faculty_ids_labels && this.state.faculty_ids_labels.length == 0 || this.state.faculty_ids_labels == undefined) { this.call(true, a) } if (this.state.faculty_ids_labels && this.state.f

我的渲染中有if-else条件,如下所示:

if (this.state.faculty_ids_labels && this.state.faculty_ids_labels.length == 0
          || this.state.faculty_ids_labels == undefined) {
   this.call(true, a)
}
if (this.state.faculty_ids_labels && this.state.faculty_ids_labels.length == 0
          || this.state.faculty_ids_labels == undefined) {
   this.call(true, formInitialValues)
}
但这会导致无限循环最大更新深度超出错误,因为此.call方法中存在状态更改。 我试着这样引用它:

if (this.state.faculty_ids_labels && this.state.faculty_ids_labels.length == 0
          || this.state.faculty_ids_labels == undefined) {
   this.call(true, a)
}
if (this.state.faculty_ids_labels && this.state.faculty_ids_labels.length == 0
          || this.state.faculty_ids_labels == undefined) {
   this.call(true, formInitialValues)
}
但这给了我一个预期的赋值或函数调用,相反,我看到了一个表达式没有未使用的表达式


this.call方法触发将新状态传递给子组件的状态。

对于这种情况,可以使用useEffect和useState挂钩。 此处状态将用于防止函数进行内部更新。 下面是功能组件的示例。对于calss组件,您可以使用shouldComponentUpdate。 链接:

但最好选择功能性组件和个人偏好

从“React”导入React,{useState,useffect}; 常数[a,setA]=useStateValse; //设置状态需要一些时间,而且本质上是异步的。因此,如果我们在渲染块中添加任何状态更新函数,它将触发infinte循环。因此,可以在useffect钩子中使用状态更新函数并附带条件。 useEffect=>{ //如果将是tre,则不会调用该函数 ifa!==真{ setAtrue; } },[a]; .....
当状态改变时,就会调用render方法。为什么在渲染中有a==b?您需要围绕a==b条件和this.call方法共享更多的上下文这是代码结构问题的标志。你能发布一个最小的可重复的例子来说明你正在尝试做什么,这样我们就有了更多的上下文吗?这个.call看起来像什么?