2017-06-07 8 views
2

Ich habe eine FlatList, die von einem Array stammt, das im Status der Ansicht definiert ist. Die Liste wird gefiltert, indem das ursprüngliche Array gefiltert und das Array mit dem neuen gefilterten Array in den Status versetzt wird. Aber das Rendern wird nur aufgerufen, wenn die Liste gescrollt wird. Gibt es eine Möglichkeit, die erneute Wiedergabe von Flatlists zu erzwingen?FlatList wird nicht neu gerendert, bis die Liste gescrollt wird.

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

Was ist Ihr Anwendungsfall? – whitep4nther

Antwort

0

fand ich mit Listview, FlatList und SectionList, dass Änderungen an der Datenquelle nur gemacht, wenn die FlatList einen eindeutigen Schlüssel hatte.

Ich werde glücklich sein, wenn jemand eine richtige Antwort postet, aber das ist, was ich jetzt tue:

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

siehe https://stackoverflow.com/a/31481960/7223

Verwandte Themen