小编Mer*_*ane的帖子

React Native BackHandler 不遵循状态更新

我在事件侦听器backAction中使用的函数使用条件状态,但在其他组件更新时不遵循状态值更新,因为它卡在初始状态值上。并且返回 true 和 false 不做任何事情。BackHandlerstagestage

预期行为:

如果按下后退按钮,检查当前阶段:

  • 如果阶段值为 1,则使用return false触发后退按钮默认行为并导航回上一屏幕(无需使用navigation.goBack())。
  • 如果阶段值大于 1,则只需将当前阶段值减 -1,并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)

javascript reactjs react-native expo

2
推荐指数
1
解决办法
2243
查看次数

标签 统计

expo ×1

javascript ×1

react-native ×1

reactjs ×1