React Native:当其他视图不存在时,使视图占据整个屏幕

React Native: Make a view take the whole screen when other view is not present

这似乎是一个基本问题,但我似乎无法弄清楚或无法正确地搜索这个问题。 我有一个 View,里面有另外两个视图,其中一个有时是隐藏的。所以组件看起来像这样:

function MyComponent (props) {
  return (
    <View style={{ flex: 1 }}>
      {
        props.showButtonView
          ? (
            <View style={{ flex: ??? }}>
              <Button title='do something' onPress={() => console.warn('doSomethign)} />
            </View>
          )
          : null
      }
      <View style={{ flex: ?? }}>
        <Stuff/>
      </View>
    </View>
  )
}

现在,我要做的是让 Stuff 组件在 Button 不存在时覆盖整个屏幕。但是,如果 props.showButtonView 为真,并且我们确实希望看到带有 Button 的视图,我只需要看到顶部的按钮,剩下的就是 Stuff 组件中的任何内容。我如何完成这项工作?是基于弹性数字吗?

此外,您可能想知道为什么我首先需要将这两个分离到单独的视图中,原因是 Stuff 组件中还有其他不相关的东西覆盖了按钮和不要让我点击它。无论如何,长话短说,在这种情况下必须将两者分开 View

flex should be 1 for both the places.

Flex:1 表示会占用if之后可用的整个space。因此,按钮放在那里与否并不重要。
props.showButtonViewtrue 时,按钮位于顶部并让您休息东西放在后面。

否则,

props.showButtonViewfalse 时,将不会执行按钮渲染代码,然后填充视图将遍布你的

props.showButtonView === true

时尝试下面的代码
function MyComponent (props) {
  return (
    <View style={{ flex: 1 }}>
      {
        props.showButtonView
          ? (
            <View style={{ width: '100%' }}>
              <Button title='do something' onPress={() => console.warn('doSomethign)} />
            </View>
          )
          : null
      }
      <View style={{ flex: 1 }}>
        <Stuff/>
      </View>
    </View>
  )
}