2016-06-16 5 views
-1

Hallo Ich habe diese Mock-APIs:Reagieren: Schleife über zwei verschiedene APIs scheint nicht zu funktionieren.

Kommentare: https://api.myjson.com/bins/17g1r

Beiträge: https://api.myjson.com/bins/2ec13

Und ich möchte API und Kommentare Beiträge API in einer Schleife über die Anzahl der Kommentare jeweils Beiträge zu bekommen basiert auf der postId in der Kommentar-API in Anzahl. Ich habe versucht, dies zu tun, aber es gibt nur ein einzelnes Objekt mit Daten und andere als nichts zurück. Hier ist ein Teil der Komponente:

postComments(comments, posts) { 
    for (var key in comments) { 
     const obj = comments[key]; 
     return posts.map((post, i) => { 
       return <PostDisplay 
         key={i} 
         {...post} 
         commentLength={ obj.postId === post.id ? obj : '' } 
        />; 
     }) 
    } 
    } 

Die commentLength Stütze, wenn diese Erträge console.logged:

Object {id: 1, text: "Praesentium ut qui facere aliquid.", user: "keltonabshire", postId: 60297} 
16 

Die Object ist das einzige Ergebnis es vorbei ist und die 16 ist die leere Zeichenkette I‘ m zu commentLength auf der PostDisplay Komponente übergehen.

Allerdings möchte ich in der Lage sein, die PostDisplay Komponente zu machen und erhalten auch die Anzahl der comments diese besondere postpostId Verwendung hat.

Ich habe die PostDisplay funktioniert, aber die commentsLength ist nicht alle posts bezogen auf jede Komponente.

Danke

+0

, wenn die 'comments' Objekt hat, sagen wir, drei Tasten, wie oft denken Sie, Ihr' für in' Schleife wird den Weg laufen Sie geschrieben es? – azium

+0

Oh, es ist ein Array, gut die gleiche Frage, wenn Sie 3 Kommentare haben, wie oft wird Ihre 'for..in' Schleife laufen? – azium

Antwort

1

Sie möchten die Kommentare Länge der einzelnen Post bekommen? Sie können zunächst keine Notwendigkeit Kommentare zu Schleife, versuchen Sie dies:

postComments(comments, posts) { 

    return posts.map((post, i) => { 
      return <PostDisplay 
        key={i} 
        {...post} 
        commentLength={ comments.filter(comment => comment.postId === post.id).length } 
       />; 
    }) 
} 
+0

Wie oft denken Sie, dass die 'for in'-Schleife so läuft? – azium

+0

Sie sind auf dem richtigen Weg, aber erklären Sie, was Sie tun, und verlieren Sie die 'for..in' Schleife, die eindeutig gebrochen ist. – azium

+1

Darf keine Schleife 'Anmerkungen' sein, entfernen Sie sie einfach. – huachengzan

Verwandte Themen