非常教程

React native参考手册

Components: ListView

ListView

DEPRECATED - 使用新的列表组件之一,例如FlatListSectionList有限的内存使用,更少的错误,更好的性能,更易于使用的API和更多功能。看看这篇博客文章了解更多详情。

ListView - 设计用于高效显示垂直滚动的变化数据列表的核心组件。最小的API是创建一个ListView.DataSource数据blob的简单数组,并ListView使用该数据源实例化一个组件,并renderRow从数据数组中获取blob并返回可渲染组件。

最小例子:

class MyComponent extends Component {
  constructor() {
    super();
    const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    this.state = {
      dataSource: ds.cloneWithRows(['row 1', 'row 2']),
    };
  }

  render() {
    return (
      <ListView
        dataSource={this.state.dataSource}
        renderRow={(rowData) => <Text>{rowData}</Text>}
      />
    );
  }
}

ListView还支持更多高级功能,包括具有粘滞节标题,页眉和页脚支持的段,到达可用数据末尾的回调(onEndReached)以及设备视口中可见的行集(更改(onChangeVisibleRows))以及几个性能优化。

有几个性能操作旨在使ListView在动态加载可能非常大(或概念上无限)的数据集时平滑滚动:

  • 只重新渲染已更改的行 - 提供给数据源的rowHasChanged函数告诉ListView是否需要重新渲染行,因为源数据已更改 - 有关更多详细信息,请参阅ListViewDataSource。
  • 限速行渲染 - 默认情况下,每个事件循环仅渲染一行(可使用pageSize道具自定义)。这将工作分解为更小的块,以减少渲染行时丢帧的机会。

道具

ScrollView道具...

数据源: ListViewDataSource

要使用的ListView.DataSource的实例

enableEmptySections?: bool

指示是否应该呈现空节标题的标志。在将来的版本中,空白部分标题将默认呈现,并且该标记将被弃用。如果不需要渲染空白部分,则应将其索引从sectionID对象中排除。

initialListSize: number

在初始组件安装时渲染多少行。使用它可以使数据的第一个屏幕显示在同一时间,而不是在多个帧的过程中。

onChangeVisibleRows?: function

(visibleRows, changedRows) => void

当一组可见行更改时调用。visibleRows所有可见行的maps {sectionID:{rowID:true}}和changedRowsmaps {sectionID:{rowID:true | 假}}为已更改其可见性的行,其中true指示可见,false指示视图已移出视图。

onEndReached?: function

当所有行都被渲染并且列表已经滚动到底部的onEndReachedThreshold内时调用。提供本地滚动事件。

onEndReachedThreshold: number

用于调用onEndReached的像素阈值(虚拟,而非物理)。

pageSize: number

每个事件循环呈现的行数。注意:如果你的'rows'实际上是单元格的,即它们没有跨越你的视图的全部宽度(就像在ListViewGridLayoutExample中一样),你应该将pageSize设置为每行单元数的倍数,否则,在加载新页面时,可能会在ListView的边缘看到间隙。

removeClippedSubviews?: bool

用于提高大型列表的滚动性能的性能优化,与溢出结合使用:在行容器上“隐藏”。这是默认启用的。

renderFooter?: function

() => renderable

在每个渲染过程中,页眉和页脚总是呈现(如果提供了这些道具)。如果它们重新渲染的代价很高,则将它们包装在StaticContainer或其他合适的机制中。页脚始终位于列表的底部,并在每个渲染过程中位于顶部。在水平ListView中,标题显示在左侧,而页脚位于右侧。

renderHeader?: function

renderRow: function

(rowData, sectionID, rowID, highlightRow) => renderable

从数据源及其ID中获取数据输入,并返回可呈现组件以呈现为行。默认情况下,数据正是放入数据源的数据,但也可以提供自定义提取器。ListView可以在通过调用突出显示行时得到通知highlightRow(sectionID, rowID)。这会在renderSeparator中设置一个布尔值adjacentRowHighlighted,允许您控制高亮行上下的分隔符。可以通过调用highlightRow(null)来重置行的突出显示状态。

renderScrollComponent: function

(props) => renderable

返回呈现列表行的可滚动组件的函数。默认使用给定的道具返回一个ScrollView。

renderSectionHeader?: function

(sectionData, sectionID) => renderable

如果提供,则为此部分渲染标题。

renderSeparator?: function

(sectionID, rowID, adjacentRowHighlighted) => renderable

如果提供了可呈现组件,则在每行下面将呈现为分隔符,但如果下面有节标题,则不会显示最后一行。取上面一行的sectionID和rowID,以及它的相邻行是否突出显示。

scrollRenderAheadDistance: number

在屏幕上显示行之前开始渲染多少行(以像素为单位)。

stickyHeaderIndices: [number]

一组儿童指标,用于确定在滚动时哪些儿童停靠在屏幕的顶部。例如,传递stickyHeaderIndices={[0]}将导致第一个孩子被固定到滚动视图的顶部。该属性不支持与horizontal={true}

stickySectionHeadersEnabled?: bool

使节标题变得粘稠。粘性的行为意味着它将随着该部分顶部的内容一起滚动,直到它到达屏幕的顶部,此时它将坚持顶部直到它被下一部分头部推出屏幕。该属性不支持与horizontal={true}。由于典型的平台标准,只在iOS上启用。

Methods

getMetrics()

导出一些数据,例如用于性能调查或分析。

scrollTo(...args: Array)

滚动到给定的x,y偏移量,立即或平滑动画。

ScrollView#scrollTo

scrollToEnd(options?: object)

如果这是一个垂直的ListView滚动到底部。如果这是一个水平的ListView向右滚动。

使用scrollToEnd({animated: true})平滑滚动动画,scrollToEnd({animated: false})即时滚动。如果没有选项通过,则animated默认为true。

ScrollView#scrollToEnd

flashScrollIndicators()

瞬间显示滚动指示器。

Components: ListView相关

React native

React Native 是一个 JavaScript 的框架,用来撰写实时的、可原生呈现 iOS 和 Android 的应用。

主页 https://facebook.github.io/react-native/
源码 https://github.com/facebook/react-native
发布版本 0.49

React native目录

1.开始 | Getting Started
2.指南 | Guides
3.APIs
4.组件:ActivityIndicator | Components: ActivityIndicator
5.组件:按钮 | Components: Button
6.组件:CheckBox | Components: CheckBox
7.组件:DatePickerIOS | Components: DatePickerIOS
8.组件:DrawerLayoutAndroid | Components: DrawerLayoutAndroid
9.组件:FlatList | Components: FlatList
10.组件:图像 | Components: Image
11.组件:KeyboardAvoidingView | Components: KeyboardAvoidingView
12.Components: ListView
13.Components: MaskedViewIOS
14.Components: Modal
15.Components: NavigatorIOS
16.Components: Picker
17.Components: PickerIOS
18.Components: ProgressBarAndroid
19.Components: ProgressViewIOS
20.Components: RefreshControl
21.Components: ScrollView
22.Components: SectionList
23.Components: SegmentedControlIOS
24.Components: Slider
25.Components: SnapshotViewIOS
26.Components: StatusBar
27.Components: Switch
28.Components: TabBarIOS
29.Components: TabBarIOS.Item
30.Components: Text
31.Components: TextInput
32.Components: ToolbarAndroid
33.Components: TouchableHighlight
34.Components: TouchableNativeFeedback
35.Components: TouchableOpacity
36.Components: TouchableWithoutFeedback
37.Components: View
38.Components: ViewPagerAndroid
39.Components: VirtualizedList
40.Components: WebView
41.创建 | Contributing
42.指南(Android) | Guides (Android)
43.指南(IOS) | Guides (iOS)
44.其他 | Miscellaneous