expo / router

[ARCHIVE]: Expo Router has moved to expo/expo -- The File-based router for universal React Native apps
https://docs.expo.dev/routing/introduction/
1.37k stars 114 forks source link

Stack Navigator Goes Back to Previous Screen if Route Matches, Even if Params Are Different on v2 #747

Open Nicell opened 1 year ago

Nicell commented 1 year ago

Which package manager are you using? (Yarn is recommended)

yarn

Summary

As of SDK 49 and expo-router v2, when a stack has links pressed on in the following order:

The stack navigator goes back to the /Nick screen when the /Joe link is pressed on the /two page instead of pushing a new screen onto the stack. This behavior does not happen before upgrading. While it does update the params, I was not expecting search params to update for screens, so my app doesn't handle it, and I don't want it to reuse screens. Continually pushing on the stack is better for my app's UX, and I'm not sure if it's achievable with the new update.

Minimal reproducible example

https://github.com/Nicell/stack-test This repo is built on the tabs@49 template. The 2nd commit is just applied on top of it.

Nicell commented 1 year ago

I was able to create a workaround by setting the getId prop on the Stack.Screens. See https://github.com/react-navigation/react-navigation/issues/9090

Still not sure why this behavior showed up with SDK 49 specifically.

EvanBacon commented 1 year ago

I wasn't able to reproduce all the screens were pushed as expected, with no popping.

Screenshot 2023-07-07 at 6 28 15 PM
Nicell commented 1 year ago

@EvanBacon Here's a video of my minimal reproducible example in the latest Expo Go on an iPhone simulator. All I did was yarn start, open on the simulator, and press each link.

https://github.com/expo/router/assets/9439650/41a73279-3501-42db-ab12-0c15a868d322

image
snowdigital commented 1 year ago

for those who facing the same issue use following code

<Stack.Screen getId={({ params }) => params.id} name="user/[id]" />

getID function makes it work

dont forget to spread params

tr3v3r commented 1 year ago

@snowdigital

Lifesaver! I can go sleep now :D

tylerjbainbridge commented 9 months ago

@snowdigital thank you!

KawikaMiller commented 2 weeks ago

@snowdigital dude you have no idea how helpful this was! absolute rockstar thank you!!