【发布时间】:2018-02-12 14:45:02
【问题描述】:
我现在唯一可以访问的数据是数组的开头部分:
[
{
/*start*/
"username" : "Bob",
"password":"123456",
"bio":"Hi",
/*End*/
"data":
[
{
"pet" : "dog",
"age" : "20",
"city" : "5"
},
{
"pet" : "cat",
"age" : "18",
"city" : "7"
}
]
}
]
我也可以访问data 数组的一部分,但我正在尝试访问所有这些。例如:{item.data[1].pet}。我尝试使用 for 循环,但没有成功。我也在使用 react-native flat list 并且 dataSource: responseJSON.data 对我也不起作用。我确信必须有一种方法可以访问 pet 的所有值,而不是每次只访问一个,我只是不知道该怎么做。
另外,由于我是初学者,任何提示将不胜感激。
编辑:尝试从 JSX 外部循环:
var itemList = [];
for (var i = 0; i < responseJSON[0].data.length; i++) { itemList.push(<Text> {responseJson[0].data[i].pet}</Text>); }
我把它从render() 中取出,然后我把itemList 放在这里:
<FlatList
data={ this.state.dataSource}
ItemSeparatorComponent = {this.FlatListItemSeparator}
renderItem={({item}) => <View>
{itemList}
</View>
}
keyExtractor={(item, index) => index}
/>
现在不理解 itemList 是一个变量。我收到语法错误。
编辑 2:感谢大家,我唯一需要帮助的是将变量放入 componentDidMountin React Native 中。
【问题讨论】:
-
循环通过
data有什么问题?我希望你知道数组以 0 而不是 1 开头,对吧? -
你能贴出你用来尝试访问这些数据的代码吗?
-
您的
renderItem函数正试图将itemList转储到View中。您可能只想为每个renderItem呈现一个项目。看看这是否对您有帮助renderItem={(item) => <View><Text>{item.pet}</Text></View>,此外,如果列表会发生变化,您应该阅读extraDataFlatList 道具。 -
@TravisWhite 我为数组中有关
data的数据执行了此操作,它可以工作。我试图在 JSX 中转储data之类的pets值。 -
@LaneyWilliams 如果您知道数据可能包含哪些属性,只需硬编码所有内容? {item.pet} {item.age} {item.city}?如果您不知道数据可能包含哪些属性,可以查看stackoverflow.com/questions/8312459/…
标签: arrays json react-native