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

Vue项目中如何将Product.vue接口返回数据传递给同级productData.js

实现方案

第一步:调整productData.js代码

你需要把内部存储的data也对外暴露,才能在外部获取到值,调整后代码如下:

// productData.js
let data = null;

function initData(apiRes) {
  data = apiRes;
  console.log(data);
  // 对数据进行相关操作
}

// 新增获取data的方法,避免直接暴露data被外部意外修改
function getData() {
  return data;
}

// 你原来写在这里的顶层console.log(data)是同步执行的,此时initData还未被调用,永远会输出null,建议删除
export { initData, getData };

如果不担心数据被外部篡改,也可以直接导出data变量。

第二步:修改Product.vue的接口逻辑

在接口请求拿到结果后,调用从productData.js导入的initData方法传入返回值即可:

<script>
// 顶部导入对应方法,注意路径要和你实际的文件相对位置匹配
import { initData } from './productData.js'

export default {
  // 其他组件配置省略
  beforeCreate() {
    const productId = this.$route.params.id;
    axios
      .get("/localhost/api/product/" + productId)
      .then((res) => {
        console.log(res.data);
        // 传入接口返回结果初始化productData里的存储值
        initData(res.data)
      })
      .catch((error) => {
        console.log(error);
      });
  },
}
</script>

注意事项

接口请求是异步操作,所有需要用到productData里存储数据的逻辑,必须保证执行时机在接口请求完成、initData已经被调用之后,否则拿到的还是初始值null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:12:00