Проблема в том, что вы хотите, чтобы ваш стек Screens
оставался в фоновом режиме при отображении экранов в стеке Modals
. Вы установили прозрачный фон для экранов в модальном стеке, но ваш экран, содержащий сам стек Modals
, не имеет прозрачного фона.
Вам также необходимо сделать экран, содержащий стек Modals
прозрачным:
<Stack.Screen
name="Modals"
component={Modals}
options={{ cardStyle: { backgroundColor: "transparent" } }}
/>
headerMode для детей наследуется от parent. Та же проблема с другими свойствами - поэтому структура моей навигации такая, какая она есть.
Навигаторы не наследуют конфигурацию своих родительских навигаторов. В случае, если вы говорите о конфигурации навигатора (реквизитах) и экранах, конфигурация навигатора не предназначена для экранов (например, экраны не имеют headerMode
).
Вам не нужно так много навигаторов. С таким навигатором все в порядке:
const modalOptions = {
headerShown: false,
cardStyle: { backgroundColor: "transparent" },
cardOverlayEnabled: true,
cardStyleInterpolator: ({ current: { progress } }) => ({
cardStyle: {
opacity: progress.interpolate({
inputRange: [0, 0.5, 0.9, 1],
outputRange: [0, 0.1, 0.3, 0.7]
})
},
overlayStyle: {
opacity: progress.interpolate({
inputRange: [0, 1],
outputRange: [0, 0.6],
extrapolate: "clamp"
})
}
})
};
const Navigation = () => {
return (
<Stack.Navigator headerMode="screen">
<Stack.Screen name="Home" component={Home} />
<Stack.Screen
name="NewPopup"
component={NewPopup}
options={modalOptions}
/>
<Stack.Screen name="Popup" component={Popup} options={modalOptions} />
</Stack.Navigator>
);
};