React Native Zomato API 评论未显示
React Native Zomato API reviews not being displayed
我正在尝试显示来自 Zomato 的评论信息 API
但是由于某种原因没有显示任何内容。
我正在使用 FlatList
把它全部放在那里,但每次我编译代码时似乎什么都没有显示出来。
这是我关于该主题的所有代码:
<Text>REVIEWS:</Text>
{this.state.data.all_reviews_count == 0 ?
<View style={{ flex: 1, padding: 20, marginTop:0}}>
<Text style={{ color: '#000', fontWeight: 'bold' }}>No reviews for this restaurant yet</Text>
</View> :
<FlatList
keyExtractor={item => item.id}
showsVerticalScrollIndicator={false}
data={this.state.data}
renderItem={({ item }) =>
<View>
<Text>{item.all_reviews_count}</Text>
</View>}/>}
我正在检索其他数据,并且都在正常输出。出于某种原因,评论部分似乎很奇怪。
我还查看了评论在 terminal
中的显示方式,这就是我得到的:
"all_reviews": Object {
"reviews": Array [
Object {
"review": Array [],
},
Object {
"review": Array [],
},
Object {
"review": Array [],
},
Object {
"review": Array [],
},
Object {
"review": Array [],
},
],
}
希望有 Zomato 经验的人 Api 可以帮助我
您检索和显示数据的方式有误。检查以下示例
import React, { Component } from 'react';
import { ActivityIndicator, FlatList, Text, View } from 'react-native';
import axios from 'axios';
export default class Example extends Component {
constructor(props) {
super(props);
this.state = {
isLoading: true,
all_reviews: {}
}
}
async componentDidMount() {
try {
let result = await axios.request({
method: 'GET',
url: "https://developers.zomato.com/api/v2.1/reviews?res_id=16774318",
headers: {
'Content-Type': 'application/json',
'user-key': "af26b7a0e16fb73e6a30ad33cb9c6634",
},
})
this.setState({
isLoading: false,
all_reviews: result.data
})
} catch (err) {
err => console.log(err)
}
}
render() {
return (
<View>
{
this.state.isLoading ?
<View style={{ flex: 1, padding: 20 }}>
<ActivityIndicator />
</View> :
<View>
<Text>REVIEWS:</Text>
{
this.state.all_reviews.user_reviews.length == 0 ?
<View style={{ flex: 1, padding: 20, marginTop: 0 }}>
<Text style={{ color: '#000', fontWeight: 'bold' }}>No reviews for this restaurant yet</Text>
</View> :
<FlatList
keyExtractor={item => item.id}
showsVerticalScrollIndicator={false}
data={this.state.all_reviews.user_reviews}
renderItem={({ item }) =>
<View>
<Text>{item.review.rating}</Text>
</View>}
/>
}
</View>
}
</View>
);
}
}
根据您的要求更改此代码,如有疑问,请随时提出。
希望对您有所帮助。
我正在尝试显示来自 Zomato 的评论信息 API
但是由于某种原因没有显示任何内容。
我正在使用 FlatList
把它全部放在那里,但每次我编译代码时似乎什么都没有显示出来。
这是我关于该主题的所有代码:
<Text>REVIEWS:</Text>
{this.state.data.all_reviews_count == 0 ?
<View style={{ flex: 1, padding: 20, marginTop:0}}>
<Text style={{ color: '#000', fontWeight: 'bold' }}>No reviews for this restaurant yet</Text>
</View> :
<FlatList
keyExtractor={item => item.id}
showsVerticalScrollIndicator={false}
data={this.state.data}
renderItem={({ item }) =>
<View>
<Text>{item.all_reviews_count}</Text>
</View>}/>}
我正在检索其他数据,并且都在正常输出。出于某种原因,评论部分似乎很奇怪。
我还查看了评论在 terminal
中的显示方式,这就是我得到的:
"all_reviews": Object {
"reviews": Array [
Object {
"review": Array [],
},
Object {
"review": Array [],
},
Object {
"review": Array [],
},
Object {
"review": Array [],
},
Object {
"review": Array [],
},
],
}
希望有 Zomato 经验的人 Api 可以帮助我
您检索和显示数据的方式有误。检查以下示例
import React, { Component } from 'react';
import { ActivityIndicator, FlatList, Text, View } from 'react-native';
import axios from 'axios';
export default class Example extends Component {
constructor(props) {
super(props);
this.state = {
isLoading: true,
all_reviews: {}
}
}
async componentDidMount() {
try {
let result = await axios.request({
method: 'GET',
url: "https://developers.zomato.com/api/v2.1/reviews?res_id=16774318",
headers: {
'Content-Type': 'application/json',
'user-key': "af26b7a0e16fb73e6a30ad33cb9c6634",
},
})
this.setState({
isLoading: false,
all_reviews: result.data
})
} catch (err) {
err => console.log(err)
}
}
render() {
return (
<View>
{
this.state.isLoading ?
<View style={{ flex: 1, padding: 20 }}>
<ActivityIndicator />
</View> :
<View>
<Text>REVIEWS:</Text>
{
this.state.all_reviews.user_reviews.length == 0 ?
<View style={{ flex: 1, padding: 20, marginTop: 0 }}>
<Text style={{ color: '#000', fontWeight: 'bold' }}>No reviews for this restaurant yet</Text>
</View> :
<FlatList
keyExtractor={item => item.id}
showsVerticalScrollIndicator={false}
data={this.state.all_reviews.user_reviews}
renderItem={({ item }) =>
<View>
<Text>{item.review.rating}</Text>
</View>}
/>
}
</View>
}
</View>
);
}
}
根据您的要求更改此代码,如有疑问,请随时提出。
希望对您有所帮助。