计算属性不重新渲染

Posted

技术标签:

【中文标题】计算属性不重新渲染【英文标题】:Computed Property not rerendering 【发布时间】:2021-10-04 22:01:53 【问题描述】:

当一个组件数据值(它是带有对象的数组)发生变化时,计算属性不受影响。

在下面的示例中,我有一个填充了一些数据的表(它是具有不同标题的不同状态的任务)。如果您单击一个任务并单击“更改任务信息”按钮,它会将当前选择的任务更改为


    Status = QA Review
    Title = TEST

但是,如果您注释 99,100 行并取消注释 96 行,如果您尝试单击按钮并选择了不同的任务,则任务将在组件的“任务”变量中更新,但从未重新呈现通过计算的道具。

有什么想法吗?

SB https://codesandbox.io/s/vue-table-test-enviroment-bx1sd?file=/src/components/HelloWorld.vue

【问题讨论】:

【参考方案1】:

如果您按索引替换数组项,Vue 无法检测到更改(请参阅Reactivity in Depth)。

解决方法很简单:

this.$set(this.tasks, indexOfUpdatedTask, test);

【讨论】:

以上是关于计算属性不重新渲染的主要内容,如果未能解决你的问题,请参考以下文章

不会重新计算基于数组值的计算属性

Vuejs2:数组更改时如何重新渲染数组计算属性

Vue 计算属性已更新,但组件未重新渲染

vue-computed计算属性

组件渲染时Vue JS计算属性尚不可用

VUE3 之 计算属性与侦听器