Может ли представление закрывать нижнюю вкладку?

В моем проекте я нахожусь в ситуации, когда было бы удобно «запретить пользователю взаимодействовать с приложением». Я хотел бы сделать это, отобразив невидимый экран, покрывающий весь дисплей.

Я заметил, что после отображения нижней вкладки я не могу заставить ее просмотреть. Есть ли способ, которым я могу дать моему мнению приоритет над всем? Я пробовал zIndex, но не повезло, я просто хочу, чтобы мой вид покрывал весь экран.

У меня есть демо-пример здесь, на выставке закусок, где вы можете точно воспроизвести мою проблему. Я также включил некоторый код ниже, который дает вам суть.

const Tab = createBottomTabNavigator();

export default function App() {
  return (
    <NavigationContainer>
    <Tab.Navigator>
      <Tab.Screen name = "ScreenA" component = {ScreenA} />
      <Tab.Screen name = "ScreenB" component = {ScreenB} />
    </Tab.Navigator>
    </NavigationContainer>
  );
}
export default function ScreenA() {
  return (
    <View style = {styles.container}>
      <Text style = {styles.paragraph}>
        Screen A. 
      </Text>
      <View style = {{justifyContent: 'center', alignItems: 'center', backgroundColor: 'pink', height: 500}}>
        <Text style = {styles.paragraph}>Is it possible to make this view cover the entire screen? Including the bottom tab and top?</Text>
      </View>
    </View>
  );
}

Быстрым, грязным и простым решением было бы просто отобразить пустое модальное окно, которое вы удаляете всякий раз, когда хотите, чтобы взаимодействия были доступны. Я думаю, вам, возможно, придется настроить модальное окно, чтобы оно не отменялось при нажатии за его пределами.

PhantomSpooks 04.11.2022 03:01

Я не совсем уверен, что вы имеете в виду под этим. Как я могу гарантировать, что модальное окно закроет нижнюю вкладку? Вы не против отредактировать мой пост о закусках, чтобы внести ясность?

guts716 04.11.2022 04:46
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
2
126
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Взглянув на этот ответ stackoverflow, я придумал решение, которое скрывает/показывает кнопки панели вкладок в зависимости от состояния переменной:

const [showTabBar, setShowTabBar] = useState(false);
  useEffect(() => {
    props.navigation.setOptions({
      tabBarStyle: { display: showTabBar ? 'flex' : 'none' },
    });
  }, [showTabBar, props.navigation]);

демо

Хотя он полностью удаляет панель вкладок, он гарантирует, что панель вкладок не будет интерактивной. Если вы считаете необходимым, чтобы панели вкладок были видны, но не нажимались, вы можете сначала создать собственный компонент панели вкладок, добавить некоторую переменную, которая заставит кнопки ничего не делать, когда они активны, использовать ее в Tab.Navigator, а затем отобразить внизу экран в ScreenA, когда showTabBar имеет значение false (убедитесь, что для переменной unpressable установлено значение true)

закуска.expo.dev/8kc1Apvb8
PhantomSpooks 04.11.2022 02:52

Этот подход отключает нажатия на панель вкладок, но панель вкладок все еще видна. Также требуется немного больше усилий, чтобы получить значки TabBar.

PhantomSpooks 04.11.2022 02:53

Он также отключит нажатия кнопок на панели вкладок на всех экранах, поэтому, если вы его используете, убедитесь, что вы установили для tabBarIsActive значение true.

PhantomSpooks 04.11.2022 02:55

Спасибо за этих Фантомов, я собираюсь оставить пост немного длиннее, и, по крайней мере, я приму ваш ответ в качестве ответа. Мне любопытно, что вы подразумеваете под рендерингом пустого модального окна, своего быстрого грязного исправления.

guts716 04.11.2022 04:49

Честно говоря, модальная идея может быть не такой грязной, как я думал. Не требует создания собственного навигатора вкладок или добавления дополнительных реквизитов на экраны snack.expo.dev/yJrp4XxdW

PhantomSpooks 04.11.2022 05:26
закуска.expo.dev/7DuhiVcyY
PhantomSpooks 04.11.2022 05:30

Подождите, это идеально. Спасибо!

guts716 04.11.2022 05:55

Другие вопросы по теме