如果响应时data.length> 0,则无法不同

时间:2019-06-27 14:24:50

标签: reactjs react-native native

我正在研究一个React本机项目,在其中我查询一个搜索短语。 但是,在我的条件语句中,无论数组内部是否有数据,我都会得到Not empty。我在做什么错了?

如果找到匹配的服务器端查询,则为第一个数组:

[
    {
        "document": {
            "name": "projects/warrenty-7707e/databases/(default)/documents/users/HBC/warrentycard/d4XgBWIywU6K2fZ7ix0j",
            "fields": {
                "comment": {
                    "stringValue": ""
                },
                "model": {
                    "stringValue": ""
                },
                "createDate": {
                    "timestampValue": "2019-06-27T11:04:47.031Z"
                },
                "product": {
                    "stringValue": ""
                },
                "exp_date": {
                    "stringValue": ""
                },
                "plate": {
                    "stringValue": ""
                },
                "email": {
                    "stringValue": ""
                },
                "name": {
                    "stringValue": ""
                }
            }
        }
    }
]

这是数组,如果不匹配:

[
    {}
]

无论哪种方式,在以下条件中,我只会得到Not Empty的退款。有什么想法吗?

if (this.state.serverData.length > 0) {
    return (

        <View>
<Text>Not empty</Text>
</View>
    )

} else {
<View>
<Text>empty</Text>
</View>
} ```

1 个答案:

答案 0 :(得分:3)

问题是,即使没有搜索结果,从服务器获取的结果数组也不为空。

您可以检查数据长度是否不为0(正在执行)以及第一个对象是否为空。

    if (this.state.serverData.length > 0 && Object.keys(this.state.serverData[0]).length !== 0 ) {
        return (<View>
                <Text>Not empty</Text>
            </View>
        )
    }
    return (<View>
    <Text>empty</Text>
    </View>);