首页 > 解决方案 > 吸气剂没有被正确调用

问题描述

我有一个带有向上/向下箭头的 Vue 组件,用于对评论进行投票,并且我在脚本类中有以下 getter:

    public get hasVotedUp(): boolean {
        console.log("== get hasVotedUp")
        ...

当页面加载时,由于在模板中正确调用了 getter :class="{ 'active-vote': hasVotedUp }"(我可以== get hasVotedUp在控制台中看到)。我有另一个函数,一旦有人投票赞成评论就会被调用:

    private voteUp(): void {
        console.log("== voteUp pressed!")
        if (this.hasVotedUp) {
        ...

当有人按下 Up 时voteUp确实会被调用(我可以看到== voteUp pressed!正在登录控制台),但我没有== get hasVotedUp在控制台中看到。为什么?

标签: typescriptvue.jsvue-component

解决方案


阅读文档Computed Caching vs Methods

计算的属性根据它们的反应依赖进行缓存。计算属性仅在其某些反应性依赖项发生更改时才会重新评估。

您可以尝试将您的计算 getter 更改为一个方法,该方法将确定它是否是因为计算缓存,因为该方法每次都会运行。


推荐阅读