From b1a65fc73e8603ae2c06ef101a74df31e80bb9b2 Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Thu, 19 Mar 2020 16:38:34 +0100 Subject: [PATCH] fix: don't use react-native-screens on web seems `react-native-screens` doesn't handle active screens properly and shows a blank page instead on web when a number is specified in the `active` prop. closes #7485 --- .../bottom-tabs/src/views/ResourceSavingScene.tsx | 15 +++++++++++---- packages/drawer/src/views/ResourceSavingScene.tsx | 14 +++++++++++--- packages/stack/src/views/Stack/CardStack.tsx | 4 ++-- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/bottom-tabs/src/views/ResourceSavingScene.tsx b/packages/bottom-tabs/src/views/ResourceSavingScene.tsx index 3ee4e3f1..c6a7a52a 100644 --- a/packages/bottom-tabs/src/views/ResourceSavingScene.tsx +++ b/packages/bottom-tabs/src/views/ResourceSavingScene.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import { Platform, StyleSheet, View } from 'react-native'; - // eslint-disable-next-line import/no-unresolved import { Screen, screensEnabled } from 'react-native-screens'; @@ -10,12 +9,14 @@ type Props = { style?: any; }; -const FAR_FAR_AWAY = 3000; // this should be big enough to move the whole view out of its container +const FAR_FAR_AWAY = 30000; // this should be big enough to move the whole view out of its container export default class ResourceSavingScene extends React.Component { render() { - if (screensEnabled?.()) { + // react-native-screens is buggy on web + if (screensEnabled?.() && Platform.OS !== 'web') { const { isVisible, ...rest } = this.props; + // @ts-ignore return ; } @@ -24,7 +25,13 @@ export default class ResourceSavingScene extends React.Component { return ( { render() { - if (screensEnabled?.()) { + // react-native-screens is buggy on web + if (screensEnabled?.() && Platform.OS !== 'web') { const { isVisible, ...rest } = this.props; // @ts-ignore return ; } + const { isVisible, children, style, ...rest } = this.props; return ( { left = insets.left, } = focusedOptions.safeAreaInsets || {}; - // Screens is buggy on iOS, so we don't enable it there + // Screens is buggy on iOS and web, so we only enable it on Android // For modals, usually we want the screen underneath to be visible, so also disable it there - const isScreensEnabled = Platform.OS !== 'ios' && mode !== 'modal'; + const isScreensEnabled = Platform.OS === 'android' && mode !== 'modal'; return (