How would one update the value of variable simulationOn
inside of function executeSimulation
in the following context:
App this.state.simulationOn
changes via external code --> ... --> React stateless component (Robot
) rerendered --> useEffect
hook called with new values --> executeSimulation
IS NOT UPDATED with new value of simulationOn
.
function Robot({ simulationOn, alreadyActivated, robotCommands }) {
useEffect(() => {
function executeSimulation(index, givenCommmands) {
index += 1;
if (index > givenCommmands.length || !simulationOn) {
return;
}
setTimeout(executeSimulation.bind({}, index, givenCommmands), 1050);
}
if (simulationOn && !alreadyActivated) {
executeSimulation(1, robotCommands);
}
}, [simulationOn, alreadyActivated, robotCommands]);
}
In the example above, simulationOn
never changes to false
, even though useEffect is called with the updated value (I check with console.log). I suspect this is because the new value of simulationOn
is never passed to the scope of function executeSimulation
, but I don't know how to pass new hook values inside of function executeSimulation
.