我有一个componentDidMount
,我想按listView
显示一些数据。现在,我想检查是否存在任何数据,因此我通过if/else
进行了检查,但它不起作用,并且始终if
为真。
我在log.console
中放了一个componentDidMount
以显示responseJson
,现在显示了none
。
但是当我有其他类似产品的数据时,if
就是true
再次。
componentDidMount(){
const { navigation } = this.props;
const cat = navigation.getParam('cat');
fetch('products.php',{
method:'POST',
headers:{
'Accept':'application/json',
'Content-type':'application/json'
},
body:JSON.stringify({
cat:cat
})
}).then((response)=>response.json()).
then((responseJson)=>{
console.log(responseJson);
if (responseJson=='none') {
this.setState({
isLoading:false,
empty:true,
});
}else{
let ds = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!=r2});
this.setState({
isLoading:false,
dataSource:ds.cloneWithRows(responseJson)
});
}
}).done();
}
答案 0 :(得分:1)
查看代码后,您似乎要检查responseJson是否为空。如果为空,则setState为空,否则setState带有响应数据。
首先,永远不要像完成操作那样对整个对象进行检查
if (responseJson=='none') {
相反,您可以检查数据附带的错误。
if (responseJson.error === true) {
this.setState({
isLoading:false,
empty:true,
});
}else{
let ds = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!=r2});
this.setState({
isLoading:false,
dataSource:ds.cloneWithRows(responseJson)
});
}
或者您可以对数据进行检查
if (responseJson.data === null) {
this.setState({
isLoading:false,
empty:true,
});
}else{
let ds = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!=r2});
this.setState({
isLoading:false,
dataSource:ds.cloneWithRows(responseJson)
});
}