typescript - 吸气剂没有被正确调用
问题描述
我有一个带有向上/向下箭头的 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
在控制台中看到。为什么?
解决方案
阅读文档Computed Caching vs Methods。
计算的属性根据它们的反应依赖进行缓存。计算属性仅在其某些反应性依赖项发生更改时才会重新评估。
您可以尝试将您的计算 getter 更改为一个方法,该方法将确定它是否是因为计算缓存,因为该方法每次都会运行。
推荐阅读
- c++ - 无法从无限循环开始创建非无限循环
- android - 从新的 RecyclerView ListAdapter 获取项目
- git - 从 Visual Studio 2012 连接到 Azure Git 存储库
- c# - C# Json.NET 骆驼案例复杂对象
- list - Scala中List数据结构的基本实现
- python - ImportError:无法导入名称“双端队列”
- spring - 使用 JDBCTemplate 、 Hikari 和 Teradata 的 Spring Boot
- r - 在 r 闪亮的模块中使用反应值
- algorithm - 这种朴素的素数分解算法有多快?
- javascript - Mocha 测试需要 done() 来结束,但随后会说“解决方法被过度指定。指定回调*或*返回 Promise;不是两者。”