2017-02-13 6 views
2

Ich baue gerade eine Suchleiste in native und Redux reagieren, aber nicht durch meine Requisiten in einem Format, das mit Texteingabe gefiltert werden kann.React Native kann Requisiten nicht filtern

onInput(text) { 
    this.setState({ 
     text, 
    }); 
    /* Search after user stop typing */ 
    clearTimeout(this.inputDelay); 
    this.inputDelay = setTimeout(() => { 
     this.getResult(text); 
    }, 1000); 
    } 

    getResult(text) { 
    if (text.length > 0) { 
     const { entitiesList } = this.props; 
     const { dataSource } = this.state; 

     console.log(this.props.entitiesList); // returns object containing an array 
     const reg = new RegExp(text, 'i'); 
     const entities = entitiesList.filter((entity) => { 
     return reg.test(entity.fullName); 
     }); 
     this.setState({ 
     dataSource: dataSource.cloneWithRows(entities), 
     }); 
    } 

Unhandled JS Exception: _this3.props.entitiesList.filter is not a function wird geworfen. This.props.entitiesList gibt ein Objekt zurück, sodass ich nicht sicher bin, wo ich falsch liege.

{ performances: 
    [ { _id: '5893b419d2b38b7122dc24f6', 
     fullName: 'Brett Monroe', 
     Z3_performance_Id: '696395', 
     A_relationship_Place: '1.', 
     N_event_Division: 'Varsity', 
     F_performance_Mark: '19.05', 
     C_athlete_Id: '273452', 
    }, 
    {...}, 
    {...} 
    ] 
} 

Alle Tipps/Hinweise geschätzt!

+1

können Sie den Wert von 'this.props.entitiesList' in der Konsole gedruckt zeigen? –

+0

{Vorstellungen: [{_id: '5893b419d2b38b7122dc24f6', L_section_Num: '1', N_impl_Division: null, fullname: 'Brett Monroe', Z3_performance_Id: '696.395', A_relationship_Place: '1.', N_event_Division : 'Varsity', F_performance_Mark: '11 .05a‘, C_athlete_Id: 'A5273452', }, } .. – Chris

Antwort

4

Grund ist entitiesList ist ein object, und Sie können filter oder anderen Iterator nicht direkt auf object wie map, forEach usw. verwenden. entitiesList enthält einen Schlüssel performances, das ist ein array, so müssen Sie es wie folgt verwenden:

const entities = entitiesList.performances.filter((entity) => { 
    return reg.test(entity.fullName); 
    }); 
+0

danke Mayank! – Chris

+0

froh, dir zu helfen :) –

Verwandte Themen