我在事件侦听器backAction中使用的函数使用条件状态,但在其他组件更新时不遵循状态值更新,因为它卡在初始状态值上。并且返回 true 和 false 不做任何事情。BackHandlerstagestage
预期行为:
如果按下后退按钮,检查当前阶段:
return false触发后退按钮默认行为并导航回上一屏幕(无需使用navigation.goBack())。return true停止事件冒泡。当前行为:
按下后退按钮后:
stage初始值 1,即使很明显其他组件更改了它并使用了它的新值。return false甚至不会触发后退按钮的默认行为。重现代码:
const [stage, setStage] = useState(1);
const backAction = async () => {
console.log(stage); // the bug: stage is always 1
if (stage === 1) {
console.log("Going back to previous screen!");
return false;
} else if (stage > 1) {
console.log("Setting stage back with -1");
await …Run Code Online (Sandbox Code Playgroud)