reactjs 如何在React Native中处理多个平面列表

xiozqbni  于 2022-11-29  发布在  React
关注(0)|答案(1)|浏览(136)

这些红色标记区域是3个FlatLists。第一个和第二个是水平滚动FlatLists,而最后一个FlatList是垂直滚动。我的问题出现在滚动最后一个FlatList时。它没有到底部,它停留在同一位置,但滚动(像它有一个固定的高度)。如何摆脱这样的东西。我正在尝试一种方法,滚动整个页面。我已经附上了一个GIF太有意义。谢谢。

<SafeAreaView style={{flex:1}}/>
//Top FLatList
<View>
  <FlatList
     showsHorizontalScrollIndicator={false}
     horizontal
     data={articles}
     ...
  />
 </View>
//Middle FLatList
<View>
  <FlatList
     showsHorizontalScrollIndicator={false}
     horizontal
     data={options}
     ...
  />
 </View>
 //Bottom FLatList
 <View>
  <FlatList
     data={articles}
     ...
  />
 </View>
</SafeAreaView>

eagi6jfj

eagi6jfj1#

此问题通常是由底部选项卡的自定义样式引起的。您可以通过将页脚组件属性添加到最后一个flatList来修复此问题。

//The total height including the bottom tab height and the space
   let bottomMargin = 110

 <SafeAreaView style={{flex:1}}/>
//Top FLatList
<View>
  <FlatList
     showsHorizontalScrollIndicator={false}
     horizontal
     data={articles}
     ...
  />
 </View>
//Middle FLatList
<View>
  <FlatList
     showsHorizontalScrollIndicator={false}
     horizontal
     data={options}
     ...
  />
 </View>
 //Bottom FLatList
 <View>
  <FlatList
     data={articles}
     ListFooterComponent={()=>(
      <FooterComponent/>
     )}
     ...
  />
 </View>
</SafeAreaView>

  const FooterComponent = () => {

    return (
        <View style={{marginBottom: bottomMargin}} />
    )
  }

卷动整页

要滚动整个页面,请将上述代码作为Header组件从第三个平面列表传递到第三个平面列表,如下所示:

<SafeAreaView style={{flex:1}}/>
//Top FLatList

 //Bottom FLatList
 <View>
  <FlatList
     data={articles}
     ListHeaderComponent={()=>(
      <HeaderComponent/>
     )}
     ...
  />
 </View>
</SafeAreaView>

  const HeaderComponent= () => {
    return (
      <View>
        <FlatList
         showsHorizontalScrollIndicator={false}
         horizontal
         data={articles}
          />

         <FlatList
         showsHorizontalScrollIndicator={false}
         horizontal
         data={options}
         />
     </View>
    )
  }

相关问题