Следующий код вроде работает.
Однако это довольно длинный код для такого базового c (я думаю) требования. Интересно, есть ли более простое решение.
Более того, он использует объект состояния навигатора, который документация НЕ рекомендует использовать. Он говорит на https://reactnavigation.org/docs/navigation-actions#reset
, « Учитывайте объект состояния навигатора должен быть внутренним и может быть изменен в незначительной версии."
import { CommonActions } from "@react-navigation/native";
// more code...
props.navigation.dispatch(state => {
// Find (by name) the stack, which I need to reset
let i;
for (i = 0; i < state.routes.length; i++) {
if (state.routes[i].name === "MyStack") {
break;
}
}
// If there has been any activity for the stack, which we found above, we reset it
let routes2 = { ...state.routes };
if (routes2[i].state) {
delete routes2[i].state;
}
return CommonActions.reset({
...state,
routes2,
});
});
props.navigation.navigate("MyStack");