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

Vue组件同一页面复用失效:仅最后一个组件加载数据

问题原因及解决方案

核心错误

你在子组件的created钩子中直接写self = this,没有用let或const声明变量,导致self变成全局变量。当两个子组件先后执行created时,第二个组件的self = this会覆盖第一个的全局self。等两个请求返回时,最终都是给最后一个组件的items赋值,所以只有最后一个组件能显示数据。

修复方案

有两种简单的修复方式:

方式1:将self声明为局部变量

在self前添加const或let,把它限定在当前组件的created作用域内:

created() {
  const self = this;
  axios.get('***?limit=' + this.limit).then(res => self.items = res.data);
}

方式2:使用箭头函数(更推荐)

箭头函数会自动继承外部作用域的this,无需额外声明self,代码更简洁:

created() {
  axios.get('***?limit=' + this.limit).then(res => {
    this.items = res.data;
  });
}

额外验证

修复后可打开浏览器开发者工具的网络面板,确认两个请求的limit参数分别为10和20,确保后端返回对应数量的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:00:02