Expo-Router – iOS – router.navigate("/") zeigt den vorherigen Bildschirm an, aber fokussieren und mounten Sie den richtiIOS

Programmierung für iOS
Anonymous
 Expo-Router – iOS – router.navigate("/") zeigt den vorherigen Bildschirm an, aber fokussieren und mounten Sie den richti

Post by Anonymous »

Ich arbeite mit Expo 51, React Native 0.74 und expo-router ~3.5.
Auf Android funktioniert alles wie erwartet.
Auf iOS habe ich ein Problem mit expo-router.
Wenn ich router.navigate("/") verwende, um zu meiner index.tsx zu gelangen app/cities/[newsId].tsx, Expo bringt mich stattdessen zum vorherigen Bildschirm zurück, nämlich newsList.
Hier ist mein Dateibaum:

Code: Select all

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
Auf dem Bildschirm „newsList“ kann ich mit keinem Element darauf interagieren und muss die App neu laden, um wieder mit der App interagieren zu können.
Ich habe einen useFocusEffect zu meiner index.tsx mit einem console.debug hinzugefügt, um zu überprüfen, ob das System trotz der Anzeige des falschen Bildschirms tatsächlich zu („/“) navigiert hat. Überraschung: Das Protokoll wird ausgelöst.
Der richtige Bildschirm ist also gemountet, aber die App zeigt den falschen an. Sehr seltsam.
Hier sind meine Städte/[newsId].tsx:

Code: Select all

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({
(...)
});
Hier ist mein Root-Stack von /_layout.tsx:

Code: Select all

                











Hinweis: Ich habe nicht das gleiche Problem mit anderen Bildschirmen.
Jede Hilfe wäre dankbar!
Bearbeiten: Ich habe Folgendes versucht:

Code: Select all

expo.replace("/")
-> gleiches Verhalten wie navigieren.

Code: Select all

expo.dismissAll()
-> bringt mich zu /cities/home.
Edit 2: Ich habe die Grundursache des Problems identifiziert. Es stammt aus den Präsentationseigenschaften in den _layout-Dateien. Jeder modal geöffnete Bildschirm, z. B.: Präsentation: „fullScreenModal“ löst dieses Verhalten aus, daher habe ich beschlossen, die Animationen zu deaktivieren.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post