На реакции-нативной, я хотел бы открыть модальный при запуске Deeplink и оставить начальный стек позади.
Это работает, когда приложение находится на переднем или заднем плане.
Но когда приложение неактивно и запущено диплинк, присутствует только AddStack. Я не могу закрыть модальный (TakePicture) и показать MainStack (Покупка).
Как сохранить MainStack позади модального?
Моя диплинк - app_scheme: // покупки / покупка / новая /: Идентификатор покупки
function App() {
const ref = useRef();
const logged = useSelector((state) => state.user.logged);
const { getInitialState } = useLinking(ref, {
prefixes: ['app_scheme://'],
config: {
AddStack: {
screens: {
TakePicture: {
path: 'purchases/purchase/new/:purchaseId',
parse: {
purchaseId: Number,
},
},
},
},
},
});
const [isReady, setIsReady] = useState(false);
const [initialState, setInitialState] = useState();
React.useEffect(() => {
Promise.race([
getInitialState(),
new Promise((resolve) =>
// Timeout in 150ms if `getInitialState` doesn't resolve
// Workaround for https://github.com/facebook/react-native/issues/25675
setTimeout(resolve, 150),
),
])
.catch((e) => {
console.error(e);
})
.then((state) => {
if (state !== undefined) {
setInitialState(state);
}
setIsReady(true);
});
}, [getInitialState]);
if (!isReady) {
return null;
}
return (
<NavigationContainer initialState={initialState} ref={ref}>
{logged ? <RootStack /> : <AuthStack />}
</NavigationContainer>
);
}
function RootStack() {
return (
<Stack.Navigator mode="modal" initialRouteName="MainStack">
<Stack.Screen
name="MainStack"
component={MainStack}
options={{ headerShown: false }}
/>
<Stack.Screen
name="AddStack"
component={AddStack}
options={{
headerShown: false,
}}
/>
...
</Stack.Navigator>
);
}
function MainStack() {
return (
<Stack.Navigator initialRouteName="Purchases">
<Stack.Screen
name="Purchases"
component={Purchases}
/>
<Stack.Screen
name="PurchaseDetail"
component={PurchaseDetail}
/>
...
</Stack.Navigator>
);
}
export default function AddStack() {
return (
<Stack.Navigator initialRouteName="TakePicture">
<Stack.Screen
name="TakePicture"
component={TakePicture}
/>
...
</Stack.Navigator>
);
}