SafeAreaView 导致屏幕上出现奇怪的间隙

The SafeAreaView causes weird gap on screen

我的 React Native 应用程序的屏幕上开始出现一些奇怪的空白。

我已经简化了一个屏幕,因此您可以在此处看到问题:

<SafeAreaView style={{flex:1, backgroundColor: 'yellow'}}>
    <View style={{flex: 1, backgroundColor: 'green'}}>

    </View>
</SafeAreaView>

当我进入后台模式并重新打开应用程序(在 iPhone 12 上快速滑动手势)时,问题消失了。参见示例:

问题可能与导航组件中的 SafeAreaView 冲突有关。 您可以像这样跳过 SafeArea 的底部填充,

import {SafeAreaView} from 'react-native-safe-area-context';
<SafeAreaView
  edges={['right', 'top', 'left']}
  style={{flex: 1, backgroundColor: 'yellow'}}>
    <View style={{flex: 1, backgroundColor: 'green'}}></View>
</SafeAreaView>

OR 对于带 Hooks 的功能组件

import { useSafeAreaInsets } from 'react-native-safe-area-context';
const insets = useSafeAreaInsets();
 <View
   style={{
     paddingTop: Math.max(insets.top, 16),
     flex: 1,
     backgroundColor: 'yellow',
   }}>
   <View style={{flex: 1, backgroundColor: 'green'}}></View>
 </View>

有关 react-native-safe-area-context API 的更多详细信息 here