2017-06-07 16 views
2

ビューの状態で定義された配列をソースとするFlatListがあります。このリストは、元の配列をフィルタリングし、新しいフィルタリングされた配列で状態の配列を設定することによってフィルタリングされます。しかし、再レンダリングは、リストがスクロールされたときにのみ呼び出されます。フラットリストを強制的に再レン​​ダリングする方法はありますか?フラットリストは、リストがスクロールされるまで再レンダリングされません。

import setsArr from '../../json/sets'; 
. 
. 
. 
constructor (props) { 
    super(props); 
    this.state({ 
    arrToDisplay: setsArr, 
    }); 
} 
. 
. 
. 
_filter = (filter,value) => { 
    var newArr = setsArr.filter(function(){ 
       return (el.filter === value) 
       }); 
    this.setState({ 
    arrToDisplay: newArr, 
    }); 
} 

renderOption = (data) => { 
    return (
    <Text>{data.item.name}</Text> 
); 
} 
render() { 
    return (
     . 
     . 
     . 
     <FlatList 
     data={this.state.arrToDisplay} 
     renderItem={(item) => this.renderOption(item)}}/> 
     . 
     . 
    ); 
} 
+0

を参照してください? – whitep4nther

答えて

0

リストビュー、フラットリスト、およびセクションリストでは、フラットリストにユニークキーがあるときだけレンダリングされるデータソースに変更があります。

誰かが正しい答えを投稿した場合、私は幸せになるだろうが、これは私が今やっていることです:

<FlatList 
    key={"mylist" + hashOfDataSourceObj} 
    ... 

は、あなたのユースケースは何https://stackoverflow.com/a/31481960/7223

関連する問題