2017-09-25 2 views
0

Wie zeige ich das Array, das in einem Array verschachtelt ist?Rendern eines in einem Array verschachtelten Arrays

Code:

this.props.posts:

[ 
    {"id":1, "name": "name01", "tags":["tag1, tag2, tag3, tag4"]}, 
    {"id":2, "name": "name02", "tags":["tag2, tag4"]} 
] 

Die Art, wie ich zu zeigen, bin versucht:

renData() { 
    const { posts, tags } = this.props.posts 
    return posts.map((key, idx) => { 
    return (

     <View key = {idx}> 
      <Text style={{fontSize:18}}>  // <= This works if tags not mapped 
       { key.id } - { key.name } 
      </Text> 

     /*  
       tags.map((keyTag, idp) => {   //<= This does not work. 
        <View key = {idp}>   // <= idp not defined error. 

        <TouchableOpacity> 

        <Text> {keyTag} </Text>   // <= How to show the content. 

        </TouchableOpacity> 

        </View> 
       }); 
     */  

     </View> 

    ) 
    }); 
} 

ich den Inhalt der tags auf jeder Zeile angezeigt werden sollen .

UPDATE1:

renData() { 
    const { posts, tags } = this.props.tagPosts 
    return posts.map((post, postIndex) => { 
    return (
     <View key = {postIndex}> 
      <View> 
      <Text style={{fontSize:18}}> 
       { post.id } - { post.name } 
      </Text> 
     { 

       post.tags.map((tag, tagIndex) => { 
         <View key = {tagIndex}>   
          <TouchableOpacity> 
           <Text> {tag} </Text>    
          </TouchableOpacity> 
         </View> 
        }) 
      } 
     </View> 
    ) 
    }); 
} 
+0

Ich sehe nichts falsch mit Ihrem * Update 1 *. Welchen Fehler bekommst du? – fubar

Antwort

2
tags.map((keyTag, idp) => {   //<= This does not work. 

Sollte

sein
key.tags.map((tag, idp) => { 

Es wäre auch eine gute Idee, beschreibende Namen verwenden - key nicht sehr aussagekräftig ist und macht es schwieriger, zu folgen. Probieren Sie etwas wie

posts.map((post, index) => { 

Umbenennung key-post macht es ein wenig mehr auf der Hand, dass Sie die tags Eigenschaft zugreifen müssen.

renData() { 
    const { posts, tags } = this.props.posts 
    return posts.map((post, postIndex) => { 
    return (
     <View key = {postIndex}> 
      <Text style={{fontSize:18}}> 
       { post.id } - { post.name } 
      </Text> 
      { 
       key.tags.map((tag, tagIndex) => 
        <View key = {tagIndex}>   
         <TouchableOpacity> 
          <Text> {tag} </Text>    
         </TouchableOpacity> 
        </View> 
       ); 
      } 
     </View> 
    ) 
    }); 
} 
+0

Danke. Versuchte das.In der App wird immer noch nichts angezeigt. Wenn ich die 'key.tags.map' vollständig entferne, werden die' posts' angezeigt. – Somename

+0

Referenzfehler: idp ist nicht definiert – Somename

+0

Die Antwort wurde aktualisiert - sie sollte geschlossen sein. Ziehen Sie die Tags in eine eigene Komponente. –

0

Es sieht so einfach zu sein, wie du bist nicht die tags aus dem post Objekt zugreifen.

key.tags.map((keyTag, idp) => { // ... 
+0

Danke. Versuchte das. In der App wird immer noch nichts angezeigt. Wenn ich die 'key.tags.map' komplett entferne, werden die' posts' angezeigt. – Somename

+0

Sind deine 'tags' JSON tatsächlich korrekt? Aus Ihrem Snippet scheint es, dass die Tags alle in einer einzigen Zeichenfolge gekapselt sind? '" tag1, tag2, tag3, tag4 "' – fubar

+0

https://stackoverflow.com/questions/46391749/push-partial-result-data-in-array-and-send/46391932?noredirect=1#comment79741124_46391932 Ich war skeptisch zu – Somename

2

Sie möchten, dass auch

renData() { 
const { posts } = this.props // take posts from props 
return posts.map((key, idx) => { 
    const { tags } = key // take tags from key which is single post 
    return (

    <View key = {idx}> 
     <Text style={{fontSize:18}}>  
      { key.id } - { key.name } 
     </Text> 


      tags.map((keyTag, idp) => {   
       <View key = {idp}>   

       <TouchableOpacity> 

       <Text> {keyTag} </Text>    

       </TouchableOpacity> 

       </View> 
      }); 
    </View> 

    ) 
    }); 
} 

tun sollten Ihre Tags in der Post ist nicht Array

[ 
    {"id":1, "name": "name01", "tags":["tag1, tag2, tag3, tag4"]}, 
    {"id":2, "name": "name02", "tags":["tag2, tag4"]} 
] 

es

[ 
    {"id":1, "name": "name01", "tags":["tag1", "tag2", "tag3", "tag4"]}, // notice the quotes on each tag not around all tags as it will one element in array 
    {"id":2, "name": "name02", "tags":["tag2", "tag4"]} 
] 
2

Rückkehr in Post fehlt sein sollte. Tags.map Methode

renData() { 
const { posts, tags } = this.props.tagPosts 
return posts.map((post, postIndex) => { 
return (
    <View key = {postIndex}> 
     <View> 
     <Text style={{fontSize:18}}> 
      { post.id } - { post.name } 
     </Text> 
    { 
     post.tags.map((tag, tagIndex) => { 
      return (
       <View key = {tagIndex}>   
       <TouchableOpacity> 
       <Text> {tag} </Text>    
       </TouchableOpacity> 
       </View> 
      ) 
     }) 
    } 
    </View> 
) 
}); 
} 
Verwandte Themen