На Android все работает как положено.
На iOS я столкнулся с проблемой с expo-router.
Когда я использую router.navigate("/") для перехода к моему index.tsx из app/cities/[newsId].tsx, вместо этого Expo возвращает меня к предыдущему экрану — newsList.
Вот мое дерево файлов:
Код: Выделить всё
app/
├── account
│ ├── address
│ │ ├── add.tsx
│ │ ├── home.tsx
│ │ └── _layout.tsx
│ ├── home.tsx
│ ├── _layout.tsx
│ ├── password
│ │ ├── change.tsx
│ │ └── verify.tsx
│ └── userInfos.tsx
├── cities
│ ├── activate.tsx
│ ├── highlights.tsx
│ ├── home.tsx
│ ├── _layout.tsx
│ ├── [newsId].tsx
│ ├── newsList.tsx
│ ├── notify.tsx
│ ├── search.tsx
│ └── settings.tsx
├── help
│ ├── home.tsx
│ └── _layout.tsx
├── index.tsx
├── _layout.tsx
├── lists
│ ├── add.tsx
│ ├── deleteList.tsx
│ ├── home.tsx
│ ├── _layout.tsx
│ ├── listMap.tsx
│ ├── listPageMenu.tsx
│ ├── listPagePreview.tsx
│ └── manage.tsx
├── login.tsx
├── +not-found.tsx
├── onboarding
│ ├── _layout.tsx
│ ├── localization.tsx
│ └── welcome.tsx
├── pages
│ ├── _layout.tsx
│ ├── onLongPressOverlay.tsx
│ ├── pageMenu.tsx
│ ├── pagePreview.tsx
│ ├── pageSheet.tsx
│ └── sharedPageSheet
│ └── [id].tsx
├── search
│ ├── home.tsx
│ ├── _layout.tsx
│ └── tagForm.tsx
└── supportUs
├── home.tsx
└── _layout.tsx
Я добавил useFocusEffect в свой index.tsx с помощью console.debug, чтобы проверить, действительно ли система, несмотря на отображение неправильного экрана, перешла к ("/"). Сюрприз: журнал срабатывает.
Итак, правильный экран монтируется, но приложение отображает неправильный. Очень странно.
Вот мои города/[newsId].tsx:
Код: Выделить всё
import { useLocalSearchParams, useRouter } from "expo-router";
(...)
export default function NewsContentPage() {
(...)
const router = useRouter();
return (
router.back()}
onPressClose={() => router.navigate("/")}
>
{t("Article")}
(...)
);
}
const styles = StyleSheet.create({
(...)
});
Код: Выделить всё
Буду признателен за любую помощь!
Изменить: я попробовал следующее:
Код: Выделить всё
expo.replace("/")Код: Выделить всё
expo.dismissAll()Редактирование 2: я определил основную причину проблемы. Он берет свое начало из свойств презентации в файлах _layout. Любой экран, открытый как модальное, например:presentation: "fullScreenModal", вызывает такое поведение, поэтому я решил отключить анимацию.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ut-focus-a
Мобильная версия