Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(router): fix navigation with nested <Slot /> layouts #24598

Merged
merged 7 commits into from
Sep 25, 2023

Conversation

marklawlor
Copy link
Contributor

@marklawlor marklawlor commented Sep 25, 2023

Why

Fixes: #24576

How

We should be using target instead of source for our navigation.

Test Plan

Added new test. Verified with reproduction from #24596

Checklist

@linear
Copy link

linear bot commented Sep 25, 2023

ENG-10211 Nested _layout.js with Slot breaking dynamic routing in expo-router 2.0.7

This issue was automatically imported from GitHub: #24576

Issue accepted by brent


Summary:

  • The user has encountered an issue with expo-router after updating it from version 2.0.5 to 2.0.7. This was originally done to fix a navigating issue with nested slots.
  • Navigating to dynamic routes is broken when using nested slots.
  • The user's test app contains a _layout.js file with Slot at the root and two child routes, each with its own _layout.js file.
  • They have tested two ways of dynamic routing, one involving a folder name that contains the dynamic ID and one involving a filename that contains the dynamic ID.
  • Removing one of the child _layout.js files fixes routing to the respective dynamic route.

@expo-bot expo-bot added the bot: suggestions ExpoBot has some suggestions label Sep 25, 2023
Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
@expo-bot expo-bot added bot: passed checks ExpoBot has nothing to complain about and removed bot: suggestions ExpoBot has some suggestions labels Sep 25, 2023
@marklawlor marklawlor merged commit bad6d38 into main Sep 25, 2023
9 checks passed
@marklawlor marklawlor deleted the marklawlor/router/ENG-10211 branch September 25, 2023 21:30
EvanBacon added a commit that referenced this pull request Dec 15, 2023
# Why

`router.push()` should always most history forwards. However we are
currently using the `NAVIGATE` action which may move history backwards
if the screen is in history and the closest navigator is a Stack.

Adds `router.navigate` for when users wish to opt out of this behaviour.

Fix: expo/router#758
Fix: expo/router#741

Keeping this in draft until #24598 is
merged

# How

This changes `router.push()` to a PUSH action if the lowest nested
navigator is a stack and shared between the old & new routes. Otherwise
it defaults back to NAVIGATE.

# Test Plan

Included test case

# Checklist

- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).

---------

Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
Co-authored-by: Evan Bacon <bacon@expo.io>
Co-authored-by: Aman Mittal <amandeepmittal@live.com>
Co-authored-by: Bartosz Kaszubowski <gosimek@gmail.com>
onizam95 pushed a commit to onizam95/expo-av-drm that referenced this pull request Jan 15, 2024
…4600)

# Why

`router.push()` should always most history forwards. However we are
currently using the `NAVIGATE` action which may move history backwards
if the screen is in history and the closest navigator is a Stack.

Adds `router.navigate` for when users wish to opt out of this behaviour.

Fix: expo/router#758
Fix: expo/router#741

Keeping this in draft until expo#24598 is
merged

# How

This changes `router.push()` to a PUSH action if the lowest nested
navigator is a stack and shared between the old & new routes. Otherwise
it defaults back to NAVIGATE.

# Test Plan

Included test case

# Checklist

- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).

---------

Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
Co-authored-by: Evan Bacon <bacon@expo.io>
Co-authored-by: Aman Mittal <amandeepmittal@live.com>
Co-authored-by: Bartosz Kaszubowski <gosimek@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bot: fingerprint changed bot: passed checks ExpoBot has nothing to complain about
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Nested _layout.js with Slot breaking dynamic routing in expo-router 2.0.7
3 participants