How is ListView.DataSource used?

时间:2017-04-16 21:05:07

标签: javascript listview react-native

Just wondering how to read this script from the RN ListView Documentation发送数据表单:

var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});

我究竟要传递给ListView.DataSource()? 我想这是一个将rowHasChanged声明为函数的对象?因此,当函数最终被持有它的任何东西调用时,它的父级知道查找rowHasChanged,并将其用作声明方式吗?

基本上,在使用ListView.DataSource时,我们必须定义一个包含rowHasChanged的对象,这只是一个“要求”吗?

或者我是否错误地解释了这一点。

谢谢!

1 个答案:

答案 0 :(得分:3)

rowHasChanged只是数据数组中两个项目之间回调的属性。 最后,您只需将带有值(或对象)的数组传递给封装在" cloneWithRows" -Method of DataSource-Object中的ListView。

import React, { Component } from 'react';
import { AppRegistry, ListView, Text, View } from 'react-native';

class ListViewBasics extends Component {
  // Initialize the hardcoded data
  constructor(props) {
    super(props);
    const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    this.state = {
      items: ds.cloneWithRows([
        'John', 'Joel', 'James', 'Jimmy', 'Jackson', 'Jillian', 'Julie', 'Devin'
      ])
    };
  }
  render() {
    return (
      <View style={{flex: 1, paddingTop: 22}}>
        <ListView
          dataSource={this.state.items}
          renderRow={(rowData) => <Text>{rowData}</Text>}
        />
      </View>
    );
  }
}

// App registration and rendering
AppRegistry.registerComponent('ListViewBasics', () => ListViewBasics);