Javascript 如何从使用钩子的钩子更新组件中的状态,而不导致无限重渲染?

Javascript 如何从使用钩子的钩子更新组件中的状态,而不导致无限重渲染?,javascript,reactjs,Javascript,Reactjs,我有以下组成部分: constcallscreen=()=>{ const[callEnded,setCallEnded]=useState(false); 常量UpdateTimeColor=()=>{ setCallEnded(真); }; 常数时钟=使用定时器( 呼叫开始时间, callLength, 呼叫超时, 时间日, 康涅狄格州, 更新颜色, ); 然后在useTimer中,我想在满足某些条件时调用updateimercolor。问题是当状态更新时,钩子会再次调用,因为调用upda

我有以下组成部分:

constcallscreen=()=>{
const[callEnded,setCallEnded]=useState(false);
常量UpdateTimeColor=()=>{
setCallEnded(真);
};
常数时钟=使用定时器(
呼叫开始时间,
callLength,
呼叫超时,
时间日,
康涅狄格州,
更新颜色,
);
然后在
useTimer
中,我想在满足某些条件时调用
updateimercolor
。问题是当状态更新时,钩子会再次调用,因为调用
updateimercolor
的条件相同,所以组件会无限地重新渲染

如何从钩子更新
CallScreen
中的状态而不创建无限循环


TIA。

您还应该包括如何调用UpdateTimeColor,但在调用setCallEnded之前检查自上次调用以来callEnded是否更改了值可能会阻止无限循环

 const updateTimerColor = () => {
   //No need to set it again if the value did not change
   if(!callEnded) {
     setCallEnded(true);
   }
 };