在以下情况下 ,如何更新simulationOn函数内部变量的值:executeSimulation
通过外部代码更改应用this.state.simulationOn程序 --> ... --> React 无状态组件 ( Robot) 重新渲染 -->useEffect使用新值调用钩子 -->executeSimulation未使用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]);
}
在上面的示例中,simulationOn永远不会更改为false,即使使用更新的值调用 useEffect (我使用 console.log 检查)。我怀疑这是因为新的值simulationOn永远不会传递给函数的范围executeSimulation,但我不知道如何在函数内部传递新的钩子值executeSimulation。