React native:从ListVIew中删除正确的项目

时间:2016-07-14 01:55:16

标签: listview react-native

我在Android上使用React Native(0.29.0)并在我的页面上有一个ListView组件。我希望能够从列表中删除项目。我很反应原生。

这是ListView组件:

<ListView
    key = {items}  //An array of strings(same as the datasource)
    dataSource = {this.state.datasource}
    renderRow = {(rowData, sectionID, rowID) => <Item data={rowData} onPress={this.deleteItem}/>}
/>

以下是删除项目的方法:

deleteItem(rowData, sectionID, rowID)
{   
    //items.splice(rowID ,1);
    this.setState({datasource: ds.cloneWithRows(items)});
}

尝试使用rowID删除项目,它会从列表中删除第一个元素,并重新呈现列表。 使用console.warn检查rowID中的内容,表示它是&#34; undefined&#34;。

我在线阅读了几个类似的问题,他们说我需要使用密钥,我不完全确定如何使用密钥。再次将密钥传递给deleteItem方法,它说密钥是&#34;未定义&#34;

我发现很难确定哪些行需要从deleteItem方法中删除。如果有人可以指导我走上正确的道路,那将非常有帮助,在此先感谢。

1 个答案:

答案 0 :(得分:0)

您需要将参数传递给onPress方法。你在一个元素上使用onPress,这个元素不知道它是否在列表中。因此,组件无法传递有关它在列表中的位置的任何数据。

你需要这样做:

    renderRow = {(rowData, sectionID, rowID) => <Item data={rowData} onPress={() => this.deleteItem(rowData, sectionID, rowID)}/>}

()=&gt;创建一个函数,所以当调用onPress时,它将调用this.deleteItem(rowData,sectionID,rowID)