如何访问作为对象数组一部分的对象内的数组的值?

路易斯·F。

在我的 componentWillMount 中,我有一个函数调用当前用户文档中的“购物车”字段。

这个购物车字段是一个对象数组,每个对象都有一个包含图像 URL 数组的字段。

我的问题是我在组件的状态中声明了我想要的变量“shoppingCart”,然后在 componentWillMount 中,我将此值分配给返回的对象数组(购物车对象)。

当我测试是否可以获取其中一个对象内的数组的第一个链接时,程序会抱怨该字段未定义并继续崩溃。我注意到,根据我声明状态变量的方式,我可以从这些对象中获取或多或少的信息。

例如:

如果我像这样声明我的状态变量:

this.state={
shoppingCart:"",
}

然后我只能到shoppingCart[n]中的对象,

但是,如果我像这样声明我的状态:

this.state={
shoppingCart:[{}],
}

我可以进入我选择的对象领域,例如:

shoppingCart[n].name;

但是当涉及到尝试获取对象内部数组的值之一时,例如:

shoppingCart[n].url[n]

这是不可能的。

我是否必须以某种方式声明状态变量?

export const getCartItems = (props) => {

return (dispatch, getState, { getFirebase, getFirestore }) => {
       const firebase = getFirebase();
       const firestore = getFirestore();
        const storage = firebase.storage();


    return 
    firestore.collection('users').doc(props.auth.uid).get().then((user)=>{
        return user.data().shoppingCart;
        })

    }

}


constructor(props) {
        super(props)

        this.state = {
             shoppingCart: [{}],
        }

     }


    componentWillMount() {

        if (this.props.auth.uid) {
        this.props.getCartItems(this.props).then((shoppingCart) => {
            this.setState({
                shoppingCart,
            })
        })


    }
}
Peter Cheng

当您将初始状态声明为 时{ shoppingCart: [{}] },您是在说要加载一个没有字段的购物车。如果您尝试访问空对象的 url,您将获得undefined. 如果您尝试访问 undefined 的第 n 个元素,则会出现运行时错误。

在你调用 promise 之后,在你的响应加载到状态之前有一段时间。在那个时候,您的初始状态需要防止您如上所述访问 undefined 字段的情况。

两个可行的选择是

this.state = { shoppingCart: [] };

或者

this.state = { shoppingCart: [ { url: [] } ] };

最后,另一种解决方案涉及没有默认状态,但每次引用状态时都有条件引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

复制Java对象数组的一部分

如何分离数组对象内某些值的一部分并从 AWS MongoDB 值映射到新数组?

如何创建作为数组中对象一部分的扁平数组数组,实质上是获取多个对象的子数组?

如何选择一个将数组作为其构造函数一部分的对象?

作为WHERE子句的一部分检查数组对象

将数组作为对象的一部分传递给Ajax调用

如何遍历对象数组并将键值作为字符串的一部分返回

用与对象数组匹配的值替换字符串的一部分?

比较并数组化为对象数组,然后返回匹配对象的一部分

在作为对象一部分的每个数组元素上都有条件

摩卡柴:深层包含对象数组,但仅包含预期对象的一部分

使用路径访问对象的一部分

尝试在 Swift 3.0 中访问数组作为 JSON api 的一部分

获取数组值的一部分

C/C++ - 按作为结构一部分的值数组进行复制

如何编写一种类型的数组,该类型的值只是打字稿中对象键的一部分

如何使用数组值的一部分作为新数组的键?

更有效的方法来过滤对象数组的一部分?

数组和对象中的尾部逗号是否属于规范的一部分?

jQuery,从变量调用数组对象的一部分

将我的字符串的一部分与对象数组匹配

应该如何将数据推送到数组中已过滤对象的一部分?

使用React钩子,如何更新对象数组中一部分对象的状态

如何通过PHP在JSON添加@符号作为对象名的一部分

如何转义作为对象加载的 json 的一部分

使用Vuex,当项目是对象数组的一部分时如何从数组中删除项目?

C# 如何组合作为列表一部分的多个 JSON 数组?

如何引用数组的一部分?

如何加入数组的一部分