vue.js - 异步数据获取不更新反应数据属性
问题描述
好吧,伙计们,我今天有一个小问题,整天都在试图解决,交易是这样的......
我正在从 firebase 获取一些数据以使用异步函数在 html 模板上呈现
我有一个这样的 fetchList 方法:
async mounted() {
let ret = await this.fetchJobRequireList()
console.log('fetchjoblist' , ret)
async fetchJobRequireList() {
// debugger
let services = JSON.parse(sessionStorage.getItem('required_services'))
services != null ? this.required_services = services : null
let docs_ = []
let result = []
if (!services) {
// this.required_services = []
// get required services per user id
let collections = this.$options.firebase.functions().httpsCallable('getRequiredServices')
let docs = await this.$options.firebase.firestore().collection('required_services').get()
// console.log('required services docs', docs)
let _ = this
for (let doc of docs.docs) {
result[doc.id] =
await collections({doc_id: doc.id}).then( async r => {
// debugger
let collections_ = r.data.cols
docs_ = []
_.required_services[doc.id] = []
for (let collection of collections_) {
let path = collection._referencePath.segments
// let documents =
let __ = _
await this.$options.firebase.firestore().collection(path[0])
.doc(path[1]).collection(path[2]).get()
.then(async documents => {
// console.log('__documents__', documents)
for (let doc_ of documents.docs) {
doc_ = await documents.docs[0].ref.get()
doc_ = {
id: doc_.id,
path: doc_.ref.path,
data: doc_.data()
}
// debugger
__.required_services[doc.id].push(doc_)
console.log("this?", this.required_services[doc.id], '__??', __.required_services)
docs_.push(doc_)
}
})
}
console.log('__docs__', docs_)
return docs_
}).catch(err => console.error(err))
// console.log('this.required_services', this.required_services)
}
}
// console.log('object entries', Object.entries(result))
// console.log('__this.required_services__', Object.entries(this.required_services))
// sessionStorage.setItem('required_services', JSON.stringify(this.required_services))
return result
}
预期的结果是在 Firebase 响应到来后更新数据函数属性,但没有发生更新。
如果有人,有任何线索,可能会发生什么......有些人告诉我异步函数可能会导致问题......但我想他们别无选择......
解决方案
推荐阅读
- android - 具有特定 Firestore 字段的用户的 Firebase 推送通知
- flutter - 颤振:解除绑定 FCM 错误时抛出异常
- list - 如何删除 List 中的项目?SwiftUI
- angular - 通过本地网络提交 Angular 表单
- android - 这是什么 kotlin 功能?:作为参数类型的 Kotlin 扩展属性:`fun X.func(X.() -> Unit)`
- excel - 如何用矩阵填充excel中的列表框?
- geoserver - 在 AWS S3 上的 GeoMesa HBase 上设置 GeoServer
- pine-script - Pinscript:函数内部的函数
- c# - C# 从公共静态类调用公共字段
- docker - OCI 运行时执行失败:container_linux.go:349:启动容器进程导致 process_linux.go 无法调整 tty 大小,使用默认大小