oth*_*adi 1 javascript reactjs react-native
我有我从 AsyncStorage 检索的以下对象,我想在 a 中显示它,FlatList但出现以下错误:
Invariant Violation: Invariant Violation: Invariant Violation: Invariant Violation: 试图获取超出范围索引 NaN 的框架
我的 JSON 格式是:
Object {
"44": Object {
"pro_id": "44",
"pro_img": "url",
"pro_name": " S4 ",
},
"52": Object {
"pro_id": "52",
"pro_img": "url",
"pro_name": " S4 ",
},
}
Run Code Online (Sandbox Code Playgroud)
上面的 JSON 是这样检索的AsyncStorage:
retrieveData = async () => {
try {
await AsyncStorage.getItem('userFavorites')
.then(req => JSON.parse(req))
.then(json => this.setState({ favPro:json }))
} catch (error) {
}
}
Run Code Online (Sandbox Code Playgroud)
我在 中渲染项目的FlatList方法定义如下:
fav = ({ item }) => {
return (
<View>
<Text>{item.pro_id+ item.pro_name}</Text>
</View>
)
}
Run Code Online (Sandbox Code Playgroud)
最后,我渲染FlatList如下:
<FlatList
data={this.state.favPro}
renderItem={this.fav}
keyExtractor={item => item.pro_id}
/>
Run Code Online (Sandbox Code Playgroud)
如何使用FlatList组件显示我的 JSON 数据?
该FlatList组件需要data道具的数组输入。根据您的 JSON 格式,您似乎传入的是对象而不是数组。
考虑对渲染方法进行以下调整:
// Convert object to array based on it's values. If favPro not
// valid (ie during network request, default to an empty array)
const data = this.state.favPro ? Object.values(this.state.favPro) : []
<FlatList
data={data}
renderItem={this.fav}
keyExtractor={item => item.pro_id}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2878 次 |
| 最近记录: |