反应导航:按下后退按钮时状态保持不变

问题描述 投票:0回答:2

在 React-navigation 中,当单击后退按钮时,状态值不会被清除,因为没有调用构造函数。例如,假设我有 2 个屏幕 - A 和 B,如果我从 A 切换到 B,然后再切换回 A,A 的状态将保留。在这种情况下,如何确保我调用了构造函数,或者如果我从 B 转换到 A,如何调用函数。 我已经按照this做了,但是没用,因为

prevProps.isFocused
每次都变成true,因此检查失败,甚至没有进入if子句。

react-native react-navigation back-button
2个回答
0
投票

导航到屏幕时必须清除堆栈。否则之前的状态将无法清除。要了解如何操作,请参阅此 React Navigation


0
投票

在 React Navigation 中,当您在屏幕之间导航时,默认行为是保持每个屏幕的状态不变。这是因为 React Navigation 在屏幕之间导航时不会卸载屏幕;它使它们保持安装状态并且仅改变可见性。

要在导航回屏幕时清除或重置状态,我们可以使用各种方法。

这是我大部分时间用来处理这种情况的技巧:-

 const navigationHandler = () => {
  // Reset the navigation state to a new state with only one route
  navigation.reset({
    // Set the index of the active route in the new state to 0
    index: 0,
    // Define the routes array with a single route object
    routes: [
      {
        // Specify the name of the screen we want to navigate to
        name: 'LegalNotices',
        // Pass any parameters needed by the target screen (this step is optional, we can skip it)
        params: { isAutoPreview: true },
      },
    ],
  });
};
© www.soinside.com 2019 - 2024. All rights reserved.