【发布时间】:2026-01-24 09:30:01
【问题描述】:
我的vue-router 有此代码:
{
path: '/templates/:id/items/:itemId', component: Item,
name: 'item'
},
在项目对象上,我有一个计算属性templateId:
templateId() {
return parseInt(this.$route.params.id, 10);
},
我遇到的问题是,每次我向 url 添加一个锚点(点击一个链接,在 item 组件内),即使组件没有改变,这个属性也会再次计算。
这意味着所有依赖于templateId的计算属性都将被重新计算。
但是 templateId 的值根本没有改变。
这是一个非常简单的 jsfiddle 来解释这个问题:
https://jsfiddle.net/1Lgfn9qh/1/
如果我删除 watch 属性(从不调用),控制台中将不再记录任何内容。
你能解释一下这里发生了什么吗? 为什么即使没有更新任何值,也要重新计算计算的属性? 我怎样才能避免这种情况?
【问题讨论】:
标签: javascript vue.js vuejs2 vue-router