Vue FireStore 反应式键分配 - 对象可能是“未定义”

Posted

技术标签:

【中文标题】Vue FireStore 反应式键分配 - 对象可能是“未定义”【英文标题】:Vue FireStore Reactive Key Assignment - Object is possibly 'undefined' 【发布时间】:2021-09-14 02:37:10 【问题描述】:

我正在尝试将由 props 转发的 FireStore data() 分配给 reactive() 代理对象,但收到以下错误:

Object is possibly 'undefined'.
(property) fireStoreData: Record<string, any> | undefined

我希望使用 forEach 循环而不是直接赋值,即 (pageForm.name = props.fireStoreData?.name) 来最小化代码。

props: 
    fireStoreData: Object,

...
setup(props)
    ...
    const pageForm:  [key: string]: any  = reactive(
        name: '',
        address: '',
        ...
    )

    onMounted(() => 
        Object.keys(pageForm).forEach(key => 
            if(key in props.fireStoreData)                  // <-- error found here
                pageForm[key] = props.fireStoreData[key]    // <-- and here
            )
        )
    )
    ...

【问题讨论】:

@Dharmaraj 不幸的是,这不起作用。 【参考方案1】:

问题在于,您假设的代码中还不需要 fireStoreData 属性。

尝试:

props: 
    fireStoreData: 
        required: true,
        type: Object
    

如果您不希望需要该道具,则始终可以检查它是否已定义并添加观察者以查找更改。

另外,别忘了道具可以改变价值。

//在手机上,稍后在电脑上格式化

【讨论】:

效果很好。谢谢你。如果您不介意,请尝试看看这个问题...***.com/questions/68203084/… @RyanPrentiss 对链接问题的回答是正确的。您实际上需要将 emit 作为 setup 函数的参数才能访问它(不同于 vue2) 嗯,这很尴尬。我没有注意到有人回答了它。大声笑

以上是关于Vue FireStore 反应式键分配 - 对象可能是“未定义”的主要内容,如果未能解决你的问题,请参考以下文章

Vue、Vuex 和 Firestore:如何在前端显示检索到的 Firestore 数据并使其具有响应性?

按对象键的Firestore查询

您如何使用 Firebase Firestore 将 RecyclerView 对象分配给用户最喜欢的对象?

我如何获取 Firestore 数据库 iOS Swift 中对象键的值

对表格进行排序时,Vue v-for循环中的重复键

将数组中的位置分配为反应键?