2017-04-11 4 views
0

Ich habe eine Seite, wo es eine Liste von Array von Objekt vom Server bekommen, und ich habe ein paar Kontrollkästchen als Filter, Benutzer wird das Kontrollkästchen aktivieren oder deaktivieren, ich muss die filtern Liste, aber ich habe Probleme, die Liste jetzt neu zu rendern. Unten ist mein Teilcode.Filter Funktion doesnt rerender in reagieren

filterItem() => { 
    // logic goes here 
    console.log(filteredItems) 

} 

renderItems (items) => { 
    return(
    //map logic goes here 
) 
} 

render(){ 
    return(
     {this.renderItems(this.props.item)} 
    ) 
} 

wie kann ich rerender renderItems Funktion durch die filteredItems als param es vorbei? Ich habe versucht this.renderItems(filteredItems), aber nicht meine Liste wurde aktualisiert.

+0

tun Da Sie 'redux' (nach Ihren Kommentar unter der Antwort) und erhalten Sie alle Daten, die in' props' sollten Sie 'dispatch' eine' action' wenn schaltet Benutzer ein Kontrollkästchen, um den Status mit bereits gefilterten Elementen zu aktualisieren. –

+0

Bitte denken Sie darüber nach, Ihre Frage mit allen Details zu aktualisieren (zB mit 'redux'), weil niemand sie erraten kann. –

Antwort

0

Sie können Ihre items im Zustand der Komponente

constructor(){ 
    super(); 
    this.state = { 
     items: this.props.items 
    } 
} 

und machen es mit {this.renderItems(this.state.items)} gesetzt. Wenn ich Sie klar verstehe, und wenn Benutzer klicken Sie auf Kontrollkästchen filtern und ändern Sie Ihre items Array, wird genug nur setState dieses neue Array, und Ihre Komponente wird selbst rerender.

0

Die Requisiten oder der Status Ihrer Komponente ändert sich nicht, daher wird Ihre Komponente nicht erneut gerendert. Wahrscheinlich möchten Sie den Status verwenden (siehe Dokumente here), um Ihre Daten zu speichern und sie entsprechend zu ändern, damit die Komponente erneut gerendert wird.

+0

Nein, es ist Requisiten, weil ich Redux verwende. Die 'Items' stammen von' const {items} = this.props' –