React Native - 尝试根据索引的状态进行打印

时间:2017-02-14 21:47:07

标签: react-native

我正在尝试遍历此数组并打印出引号,具体取决于它是保存为true还是false。 目前,它只是在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 个答案:

答案 0 :(得分: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为true,则返回一个节点。

如果将它们分配给新变量ex:var savedQuotes = ...或在渲染函数中使用它,可以将它们保存到新数组中:

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

map()方法创建一个新数组,其中包含调用a的结果   为此数组中的每个元素提供了函数。

以下是更多信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

以下是反应文档中的一些示例:https://facebook.github.io/react/docs/lists-and-keys.html(应该足够接近反应原生)