首页 > 解决方案 > VueX、VUE、APOLLO - 组件未更新

问题描述

我从子组件GraphQL发出请求并将结果成功发送到父组件。

我没有在我的父组件中存储和更新结果数组,而是将其重构为VUEX

收到结果后,我使用该this.$store.dispatch('handle', payload)方法向我的商店发送一个事件。

然后这会触发一个突变,它成功地更新了存储:

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>

我可以看到模板似乎比计算属性和存储都落后一个刻度。我试过使用观察者,使用getter和setter,有一个本地结果数组并将商店复制到这个......但除了setTimeout之外没有任何效果。

拔我的头发!!!

标签: javascriptvue.jsvuex

解决方案


推荐阅读