Typescript 未正确调用getter

Typescript 未正确调用getter,typescript,vue.js,vue-component,Typescript,Vue.js,Vue Component,我有一个带有向上/向下箭头的Vue组件,用于对评论进行投票,脚本类中有以下getter: public get hasVotedUp(): boolean { console.log("== get hasVotedUp") ... 当页面加载时,由于模板中的class={'activevote':hasVotedUp}而正确调用getter,我可以在控制台中看到==get hasVotedUp。 我有另一个函数,一旦有人投票支持该评

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

    public get hasVotedUp(): boolean {
        console.log("== get hasVotedUp")
        ...
当页面加载时,由于模板中的class={'activevote':hasVotedUp}而正确调用getter,我可以在控制台中看到==get hasVotedUp。 我有另一个函数,一旦有人投票支持该评论,就会调用该函数:

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

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

请阅读文档

计算属性根据其反应性依赖项进行缓存。计算属性只有在其某些反应依赖项发生更改时才会重新计算


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

请阅读文档

计算属性根据其反应性依赖项进行缓存。计算属性只有在其某些反应依赖项发生更改时才会重新计算


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

为我们提供一个最小的复制案例。没有更多的代码或解释比你给这应该是工作。值得注意的是,getter导致的副作用通常是不允许的。@JaredSmith但是当页面加载时,console.log似乎确实起作用——我想这不是禁止的,只是getter产生副作用的一种反模式。或者,一旦页面完全加载,浏览器就会禁止它…?这不太可能是一种惯例。开发商通常期望物业访问不会在远处引起恐怖行为,但我严重怀疑是否有任何实际执行。给我们一个最低限度的复制案例。没有更多的代码或解释比你给这应该是工作。值得注意的是,getter导致的副作用通常是不允许的。@JaredSmith但是当页面加载时,console.log似乎确实起作用——我想这不是禁止的,只是getter产生副作用的一种反模式。或者,一旦页面完全加载,浏览器就会禁止它…?这不太可能是一种惯例。开发人员通常期望访问某个属性不会引起远距离的恐怖行为,但我严重怀疑是否有任何实际的强制执行。似乎就是这样-我将其从getter更改为方法,并按预期工作。我想还有很多RTFM需要做…但是Op的伪代码不完整,你怎么能断定它没有反应状态?@ABOS我没有研究过状态,也许它只是起作用了-我所看到的是,作为理解流程的第一步,是否调用了getter。@ABOS最有可能的场景似乎就是它-我将它从getter改为方法,并且它按预期工作。我想还有很多事情要做…但是Op的伪代码还不完整,你怎么能断定它没有反应状态?@ABOS我没有研究过状态,也许它只是工作-我所看到的是,是否调用getter作为理解流的第一步。@ABOS最有可能的情况是