在 React-navigation 中,当单击后退按钮时,状态值不会被清除,因为没有调用构造函数。例如,假设我有 2 个屏幕 - A 和 B,如果我从 A 切换到 B,然后再切换回 A,A 的状态将保留。在这种情况下,如何确保我调用了构造函数,或者如果我从 B 转换到 A,如何调用函数。 我已经按照this做了,但是没用,因为
prevProps.isFocused
每次都变成true,因此检查失败,甚至没有进入if子句。
导航到屏幕时必须清除堆栈。否则之前的状态将无法清除。要了解如何操作,请参阅此 React Navigation
在 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 },
},
],
});
};