繁体   English   中英

reactjs 使用 useState 和 useEffect 避免无限循环

[英]reactjs Avoid Infinite loop using the useState and useEffect

如何避免无限循环? 我的意思是在第一次单击时 StudentSubject 必须是未定义的,在第二次单击时它将获取数据,在我当前的代码中结果是无限循环,它不断循环console.log(getStudentId, getRelevance)如何避免这种情况?

  const [getStudentId, setStudentId]= useState();
  const [getRelevance, setRelevance]= useState();

  useEffect(() => {
    student();
  }, []);
  
  const onClickGrade = (studentId, relevance) => {

   .....
    console.log(getStudentId, getRelevance) //undefined
    if(StudentSubject === undefined){
        onClickGrade(studentId, relevance) //infinite loop
    }
   ....
  }

  const student = () => {
    .....
    view.on('click', onClickMap);
    .....
  }

  const onClickStudent = (event)=>{
      const studentId = student.getAttribute('id');
      const relevance = student.getAttribute('relevance');
      setStudentId(studentId)
      setRelevance(relevance)
      onClickGrade(studentId, relevance)
  }

您正在递归调用 onClickGrade

const onClickGrade = (studentId, relevance) => {

   .....
        onClickGrade(studentId, relevance) ## Infinite loop in a recursive call
   ....
  }

这取决于您想要实现的目标,但您当然需要更改您的逻辑或至少添加一个条件以防止递归中的无限循环。 您的 studentSubject 听起来总是未定义。 您可能需要保存 prevStudentSubject 并将其与当前主题进行比较。

if (studnetSubject === prevStendentSubject) return

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM