javascript - 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之外没有任何效果。
拔我的头发!!!
解决方案
推荐阅读
- c - 在 C 中传递结构时出现 GTK_Pointer 问题
- c# - 'Checked = True' 导致异常
- android - 如何使用 Kotlin 在 OnPreferenceChangeListener 上保存 newValue?
- android - 带右箭头的按钮
- arrays - 将数字推入矩阵数组
- php - 数据未使用 wamp 服务器从 php 代码插入 mysql 数据库
- ssl - Chrome 扩展 .pem 文件有什么用途?
- swift - 为什么公共类型会抛出私有类型的错误?
- java - 查找由 Java 无意的隐式缩窄转换导致的整数溢出
- vb.net - 如何在 vb.net 中关闭 if 语句