我们如何使ListHeaderComponent成为SectionList中的粘性标头?

时间:2020-08-02 11:50:01

标签: react-native expo react-native-flatlist react-native-sectionlist sticky-header

说明

我正在ListHeaderComponent内使用水平制表符栏,我想将ListHeaderComponent用作SectionList中的粘性标头。我们可以通过stickyHeaderIndices={[0]}在平面列表中添加stickyheader,但在 SectionList

中不起作用

反应本机版本:

React Native Environment Info:
    System:
      OS: macOS 10.14.6
      CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
      Memory: 38.35 MB / 16.00 GB
      Shell: 5.3 - /bin/zsh
    Binaries:
      Node: 12.15.0 - /usr/local/bin/node
      Yarn: 1.21.1 - /usr/local/bin/yarn
      npm: 6.13.4 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.4, macOS 10.14, tvOS 12.4, watchOS 5.3
      Android SDK:
        API Levels: 28, 29
        Build Tools: 28.0.3, 29.0.1, 29.0.2
        System Images: android-26 | Google Play Intel x86 Atom, android-27 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 3.5 AI-191.8026.42.35.5791312
      Xcode: 10.3/10G8 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.8.6 => 16.8.6
      react-native: 0.59.8 => 0.59.8
    npmGlobalPackages:
      rename-horizon: 1.1.0
      react-native-cli: 2.0.1

复制步骤

提供重现该问题的详细步骤列表。

  1. 制作节列表并添加ListHeaderComponent道具
  2. 在部分列表中添加stickyHeaderIndices={[0]} 它不会使ListHeaderComponent成为粘性标头

预期结果

应该将ListHeaderComponent作为粘性标头。或使用其他方式使其成为粘性标头

foodpanda

2 个答案:

答案 0 :(得分:0)

使用类似这样的东西。

<View style={{ flex: 1 }}>
  {renderStickyListHeaderComponent()}
  <SectionList
    {...sectionListprops}
    ref={sectionListRef}     
    sections={sectionData}
    stickySectionHeadersEnabled={false}   
  />
</View>

答案 1 :(得分:-1)

你可以使用 renderSectionHeader &stickySectionHeadersEnabled = true

render() {
  return (
    <SectionList
      data={sections}
      renderSectionHeader = {({section:{title}}) => (<YourHeader>)}
      stickySectionHeadersEnabled/>
 )
}