2017-06-14 3 views
0

Problem ist das. Basierend auf einer Statusvariable rendere ich entweder eine wiederverwendbare Komponente auf einem ListView renderRow oder gebe null zurück.ListView Wird bei Zustandsänderung nicht neu gerendert

//renderRow 
if (this.state.openSections[sectionID] === false) {return null} 

    return (<View style = {{flex :1, overflow : 'hidden'}}> 
       <CalculatorItem item = {rowData}></CalculatorItem> 
      </View>) 

wenn ein Abschnitt gedrückt wird, Objekte der entsprechende Eintrag in openSections schaltet auf wahr oder falsch ist, was darauf hinweist, dass die Zeilen machen sollte, um für den Benutzer sichtbar zu sein.

sectionPressed: function(sectionID) { 
    ... 
     //create a new openSections var and set the state 
     this.setState((state, props) => { return { openSections }}); 
    } 

Die Listview-Elemente werden jedoch nicht gerendert.

Irgendwelche Hinweise?

+0

Brauchen Sie mehr Kontext. Wo ist die Listenansicht? – sooper

+0

Können Sie den Code hier teilen? –

Antwort

0

Die Sache ist, dass die ListView nur neu gerendert wird, wenn ihre Datenquelle geändert wird. Ansonsten bleibt es wie es ist. Wenn Sie also Ihren Status ändern, möchten Sie möglicherweise auch den Wert in der Eigenschaft dataSource ändern.

Verwandte Themen