如何访问从Firestore返回的对象的属性?

时间:2020-04-04 13:00:04

标签: reactjs google-cloud-firestore react-hooks console.log

我是React的初学者,遇到这个小问题,我无法理解。

我已成功从Firestore检索数据并更新了状态items。当我登录item[1]时,它返回了具有预期属性idnamedescription的对象,但是在尝试item[1].id时却给了我无法读取属性'未定义的ID” 错误

能否请您提示我这里可能出什么问题了?

这是我的代码的样子

import React, { useState, useEffect, useCallback } from 'react';
import db from '../../../firestore';

const Carousel = () => {

    const [items, setItems] = useState([]);

    useEffect(() => {
        db.collection('destinations')
            .get()
            .then(querySnapshot => {
                const data = [];
                querySnapshot.docs.map(doc => {
                    data.push(doc.data())
                })
                setItems(data);
            }).catch(err => console.log(err));
    }, [])

    return (
        <div>
            {console.log(items[1])} {/* This works  */}
            {console.log(items[1].id)} {/* This gave error */}
        </div>
    )
};

export default Carousel;

1 个答案:

答案 0 :(得分:0)

由于emtpy数组是一个真实值,您需要在返回时执行此操作

if($getCapital == $capital[$getCountry]){
        echo "The capital of ".$getCountry." is ". $getCapital.", this is correct.";
        $count++;
}else{
        echo "Sorry, the capital of  ".$getCountry." is not ". $getCapital.", but ".$capital[$getCountry];
        $count = 0;
}

您需要检查return ( <div> {items[1] && <div>{items[1].id}</div> } </div> ) ,在渲染时,仅当items[1]有数据时才可以访问。 如果为空,则访问items会给您发布错误。

相关问题