2016-07-14 9 views
0

私はAndroidでReact Native(0.29.0)を使用しており、自分のページにListViewコンポーネントを持っています。私はリストからアイテムを取り除くことができるようにしたい。私はネイティブに反応するのはかなり新しいです。ここReact native: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メソッドのキーを渡し、再び、定義されていない "

deleteItemメソッド内から削除する必要がある行を特定するのが難しいと思っています。誰かが正しい経路で私を導くことができれば、本当に役に立ちます。

答えて

0

引数をonPressメソッドに渡す必要があります。あなたは要素上でonPressを使いますが、この要素はリスト上にあるかどうかわかりません。そのため、コンポーネントはリスト内の場所に関するデータを渡すことができません。

あなたが実行する必要があります。

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

()=>関数を作成し、そのたonPressが呼ばれたとき、それはthis.deleteItem(rowData、セクションID、ROWID)を呼び出します

+0

はどうもありがとう、それは私の問題を解決した、私は引数を渡すために()=>を使ってメソッドを作成しなければならないことを知らなかった。 – Ajith

+0

問題はありません。そうする必要があります。それ以外の場合、deleteItemメソッドは引数なしで呼び出されないためです。 onPressはコンポーネントに属していますが、これはリストビューとは関係ありません。 – Jakkra

関連する問題