Из дочернего компонента я делаю запрос GraphQL
и успешно отправляю результат родительскому компоненту.
Вместо того, чтобы сохранять и обновлять массив результатов в моем родительском компоненте, я реорганизовал его в VUEX .
Получив результат, я отправляю событие в свой магазин, используя метод this.$store.dispatch('handle', payload)
.
Затем запускается мутация, которая успешно обновляетstore:
UPDATE_RESULT(state, result) {
state.queries[state.search.selectedQuery].results[result.index] = {
...result
}
}
Вернувшись в родительский компонент, я использую помощник mapState({})
, чтобы сопоставить массив результатов с вычисляемым свойством.В инструментах разработчика Vue я могу подтвердить, что и обновления магазина, и обновления вычисленных свойств моего компонента успешно выполнены:
computed: {
...mapState({
results: state => state.queries[state.search.selectedQuery].results
})
},
Однако мой шаблон отказывается обновлять:
<template v-for="(result, index) in results">{{result}}</template>
Я могувидим, что шаблон кажется на один тик позади как вычисляемого свойства, так и магазина.Я пытался использовать наблюдателя, используя геттеры и сеттеры, иметь локальный массив результатов и копировать хранилище в это ... но ничего не работает, кроме setTimeout.
Вытягивание волос !!!