В Vue.js есть методы; Vue.set для добавления и Vue.delete для удаления, но для «обновления» нет методов Vue, вместо этого вы используете Object.assign. На самом деле это работает нормально, если во вложенных объектах нет изменений. Есть ли в Vue функция, такая как обновление или обновление, потому что я вижу изменение состояния на вкладке расширения Chrome Vue, но не вижу изменения на веб-странице.
Представление Vue не запускается для обновлений.
Пример: когда я добавил элемент в «дома», я не вижу новый дом на странице, даже если я вижу новый элемент поверх состояния Vue. Я вижу новый элемент, когда перезагружаю страницу.
"clients": {
"oES4H0IMsYaCvGkSDKLmXkOkgXR2": {
"CL_937fef22-cee7-4b14-9e4d-4e6751c82dab": {
"name": "Adina Dowless",
"email": "[email protected]",
"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"
}
}
},
}
Изменить: я использую Quasar Framework, библиотеку Vuex и базу данных Firabase Realtime.
Итак, этот объект клиентов в хранилище vuex, а исходные данные поступают из базы данных Firebase.
При добавлении клиента: Vue.set(state.clients, payload.id, payload.client)
При удалении клиента: Vue.delete(state.clients, id)
При обновлении клиента: Object.assign(state.clients[payload.id], payload.updates)
Эти функции работают правильно при добавлении, удалении или обновлении свойств первого уровня клиентов, таких как имя или адрес электронной почты,
При добавлении нового дома в дома запускается обратный вызов базы данных child_changed для клиентов со всеми обновленными данными, но компонент на веб-странице не обновляется.
instead you use Object.assign
, нет. Вы просто назначаете напрямую знаком=
. - person Mat J   schedule 01.04.2020houses
? Если это новое свойство, просто используйтеset
. - person skirtle   schedule 01.04.2020