2017-02-14 47 views
0

我想循環這個數組並打印出報價,這取決於它是保存爲真還是假。 目前,它只是在JSON數組中打印出來。我是新來的本地人,所以不是100%肯定map的行爲。反應本機 - 試圖打印取決於索引的狀態

var savedQuote = quotes.quotesArray.map(quote => quote.isSaved) 

{ 
        quotes.quotesArray.map((quote, i) => { 
        if(savedQuote){ 
         return(       
          <TouchableOpacity key={i} style = {styles.border}> 
           <Text style = {styles.text}> 
           i: {i}. {quotes.quotesArray[i].preview} 
           </Text> 
          </TouchableOpacity> 
         ) 
        } 
        else{ 
         return <Text key = {i}>{i}Nada</Text> 
        } 
        }) 
       } 

回答

1

我不明白你爲什麼在代碼中有兩個map。每個人都應該足夠了:

quotes.quotesArray.map((quote, i) => { 
    if(quote.isSaved){ 
    return(       
     <TouchableOpacity key={i} style = {styles.border}> 
     <Text style = {styles.text}> 
      i: {i}. {quote.preview} 
     </Text> 
     </TouchableOpacity> 
    ) 
    } else { 
    return <Text key = {i}>{i}Nada</Text> 
    } 
}); 

這將遍歷報價,要麼返回一個節點或要麼如果quote.isSaved是真還是假。

,你可以將它們保存到一個新的數組,如果你把它分配給一個新的變量例如:var savedQuotes = ...或用它渲染函數中:

render() { 
    return (
     <View> 
     {quotes.quotesArray.map...} 
     </View> 
    ); 
    } 

的地圖()方法創建一個新的數組調用 的結果爲該數組中的每個元素提供了函數。

下面是詳細信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

下面是從反應文檔一些例子:https://facebook.github.io/react/docs/lists-and-keys.html(這應該是足夠接近反應天然)

+0

這不具有變量「i」 。我需要報價後嗎? – user2026178

+0

對不起!我的錯。我編輯了我的答案。第二個參數是可選的,除非你使用它當然... –

+0

我做了第二次編輯...'''quote'''代表你正在迭代的元素,因此,你不需要'''引號.quotesArray [i] .preview''',而是''quote.preview''' –