在Vue.js中,有一些方法;Vue.set用于添加,Vue.delete用于删除,但是对于“update”,没有Vue方法,而是使用Object.assign。实际上,如果嵌套对象中没有任何更改,这是很好的。在Vue中是否有像update或refresh这样的函数,因为我在Chrome扩展选项卡中看到状态发生了变化,但是没有看到网页中的变化。
Vue视图不会为更新触发。
当我在“house”中添加一个项目时,我无法在页面上看到新的房子,甚至我可以在检查Vue,state上看到新的项目。当我重新加载页面时,我可以看到新的项目。
"clients": {
"oES4H0IMsYaCvGkSDKLmXkOkgXR2": {
"CL_937fef22-cee7-4b14-9e4d-4e6751c82dab": {
"name": "Adina Dowless",
"email": "adinadowless@test.com",
"phone": "(547) 515 53 91",
"houses": {
"0": {
"name": "sugarless",
"uavt": "832677187473",
"housePolicyId": "PO_7f12d27f-245b-41a6-92b4-dacb0256ccac",
"daskPolicyId": "PO_f5fba094-7272-41f8-a406-f9251df5a37f"
},
"1": {
"name": "intersexualism",
"uavt": "931095588844",
"housePolicyId": "PO_2d6b79d2-53a0-42f9-8445-df06c3b3bc5a",
"daskPolicyId": "PO_79f37178-0714-4c19-aa24-204ea3cf30e7"
}
}
},
}编辑:我使用类星体框架,Vuex库和Firabase实时数据库。
因此,此客户端对象位于vuex存储区中,初始数据来自Firebase数据库。
当添加client:Vue.set(state.clients, payload.id, payload.client)时删除client:Vue.delete(state.clients, id)更新client:Object.assign(state.clients[payload.id], payload.updates)
这些功能在添加、删除或更新客户端一级属性(如名称或电子邮件)时工作正常。
当将新房子添加到房屋中时,将触发用于客户端的firebase数据库child_changed回调,并包含所有更新的数据,但网页中的组件不会更新。
发布于 2020-04-01 09:46:21
您不需要一种特殊的方法来进行更新。这就是Vue自己做的事情。但是Vue 只跟踪创建组件时存在的键。
Vue不跟踪向现有对象添加新属性。
在向对象添加新属性时,需要使用Vue.set,以便Vue知道跟踪新属性。
因此,我认为您应该在Vue.set对象上使用house,或者使用Object.assign创建一个新对象。
附带注意:当houses作为一个数组可能更好的时候,您似乎使用它作为一个对象。如果将其更改为数组并使用Array.push,则Vue将跟踪更改。如果要在特定索引处将新项分配给数组,则应使用数组的Vue.set。
https://stackoverflow.com/questions/60967783
复制相似问题