2016-07-14 4 views
0

Я использую React Native (0.29.0) на Android и имею компонент ListView на своей странице. Я хочу, чтобы удалять элементы из списка. Я довольно новичок в реагировании.React native: Удаление нужного элемента из 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, говорит, что он «неопределен».

Я прочитал несколько аналогичных вопросов в Интернете, и они сказали, что мне нужно использовать ключ, я не совсем уверен, как использовать ключ. Протестировавшись, передавая ключ к методу deleteItem, опять же, он говорит, что ключ " undefined "

Мне трудно определить, какая строка должна быть удалена из метода deleteItem. Будет очень полезно, если кто-то может вести меня по правильному пути, спасибо заранее.

ответ

0

Вам необходимо передать аргументы в свой метод onPress. Вы используете onPress для элемента, этот элемент не знает, что он в списке или нет. Таким образом, компонент не может передавать какие-либо данные о его местоположении в списке.

Вам нужно сделать:

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

() => создает функцию, поэтому, когда onPress называется он будет вызывать this.deleteItem (ROWDATA, sectionID, RowId)

+0

Благодарю вас так много, он исправил мою проблему, я не знал, что мне нужно было создать метод, используя() =>, чтобы передать аргументы. – Ajith

+0

Нет проблем, да, вам нужно это сделать. Потому что иначе метод deleteItem не будет вызываться с любыми аргументами. OnPress принадлежит вашему компоненту , который не имеет ничего общего с списком. – Jakkra

Смежные вопросы