我在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方法中删除。如果有人可以指导我走上正确的道路,那将非常有帮助,在此先感谢。
答案 0 :(得分:0)
您需要将参数传递给onPress方法。你在一个元素上使用onPress,这个元素不知道它是否在列表中。因此,组件无法传递有关它在列表中的位置的任何数据。
你需要这样做:
renderRow = {(rowData, sectionID, rowID) => <Item data={rowData} onPress={() => this.deleteItem(rowData, sectionID, rowID)}/>}
()=&gt;创建一个函数,所以当调用onPress时,它将调用this.deleteItem(rowData,sectionID,rowID)