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

NuxtJS/Vue:mounted钩子执行后页面数据未更新问题求助

解决Vue请求成功后页面不更新的问题

嘿,我一眼就看出问题所在了——你现在只是在请求成功后return了一个包含stats的对象,但这个对象根本没和Vue的响应式系统挂钩,页面当然不会更新啦!Vue的响应式更新依赖于修改组件data选项中声明的响应式变量,下面是具体的修复步骤:

1. 先在组件中声明响应式变量

首先要在组件的data选项里定义stats,让它成为Vue可以追踪的响应式数据:

data() {
  return {
    stats: null // 初始值设为null,对应模板里的v-if判断
  }
}

2. 修改mounted中的请求逻辑

不要在then回调里return对象,而是把接口返回的数据直接赋值给this.stats。另外注意:axios返回的响应对象中,实际的接口数据通常存在res.data里,你可以对照console.log的结果调整路径:

mounted: function() {
  axios.get('/api/user/profile/stats')
    .then((res) => {
      console.log(res)
      // 将接口数据赋值给响应式变量,触发页面更新
      this.stats = res.data; 
      // 如果接口返回的结构是res.data.stats,那就要改成this.stats = res.data.stats
    })
    .catch((e) => {
      console.log(e)
    })
}

3. 验证模板的变量路径

最后确认模板里的stats.ident是否和接口返回的结构匹配。比如如果接口返回的res.data里直接有ident字段,那当前模板就没问题;如果ident是嵌套在stats字段下,那你需要调整赋值逻辑或者模板中的变量路径。

为什么之前的代码没用?因为mounted钩子的返回值不会被Vue处理,它只是用来执行初始化操作的生命周期函数,只有修改组件的响应式数据,才能触发Vue的DOM更新机制哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:12