当数据为空时,React-Native FlatList呈现零状态

stu*_*ain 11 react-native

当数据为空时是否可以呈现备用组件?我不只是渲染列表或不渲染列表的唯一原因ListHeaderComponent是在两个场景中都是必要的(data.length!data.length)...

const data = []
<FlatList
  contentContainerStyle={styles.list}
  data={data} // if empty or !data.length render <ZeroComponent/>
Run Code Online (Sandbox Code Playgroud)

Sub*_*thy 18

UPDATE react-native最近添加了ListEmptyComponent

const data = []
_listEmptyComponent = () => {
    return (
        <View>
            // any activity indicator or error component
        </View>
    )
}

<FlatList
    data={data}
    ListEmptyComponent={this._listEmptyComponent}
    contentContainerStyle={styles.list} 
/>
Run Code Online (Sandbox Code Playgroud)
const data = []

renderFooter = () => {
  if (data.length != 0) return null;


  return (
    <View>
      // any activity indicator or error component
    </View>
   );
};

<FlatList
    contentContainerStyle={styles.list}
    data={data}
    ListFooterComponent={this.renderFooter}
/>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 为什么不使用ListEmptyComponent? (5认同)

Jig*_*wda 12

有一个ListEmptyComponent可以完成这项工作的道具.

<FlatList
    data={this.state.data}
    renderItem={this.renderItem}
    keyExtractor={(item, index) => item.id}
    ListHeaderComponent={this.showFilters()}
    ListEmptyComponent={this.showEmptyListView()}
/>
Run Code Online (Sandbox Code Playgroud)