You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3:如何在@click函数中传递变量名以修改对应数据?

解决方法

你需要传递变量名的字符串,而不是变量本身,然后通过Vue实例的this[变量名字符串]来直接修改data里的对应属性,具体修改如下:

修改后的按钮代码

<button @click="raiseStat('health')">Add</button>

修改后的函数代码

methods: {
    raiseStat(statName){
      this[statName]++
    }
}

原写法失效的原因

你之前传递health时,实际是把data里health的当前值(也就是1)传给了statName,这时候statName只是一个普通数值变量,修改它只会改变副本的值,完全不会影响data里的原变量。

而传递字符串'health'后,this[statName]等价于this.health,直接指向data里的响应式属性,修改它会触发Vue的响应式更新,页面也会同步显示变化后的数值。

如果后续需要添加其他属性(比如strength、mana),只需要在按钮里传递对应的字符串(raiseStat('strength')),不需要修改函数逻辑,扩展性很强。

内容的提问来源于stack exchange,提问作者Hunter Forrester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:15:48