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

Vue:如何在created生命周期函数中正确访问props传入的数组数据

问题根因

父组件的城市数据是通过getCities异步接口获取的,子组件created生命周期触发时,接口请求还未返回结果,父组件传给子组件的cityOptions还是初始化的空数组,所以此时直接打印options得到的是空值。
你打印完整this.$props时能看到填充后的数据,是浏览器控制台的特性:打印引用类型数据时存储的是引用指针,你手动点开控制台对象时,接口已经返回、数据已经更新,所以展示的是最新值,并非打印时刻的真实数据。

解决方法

方法1:父组件等待数据加载完成后再渲染子组件

在父组件调用子组件的标签上添加v-if判断,等cityOptions有值后再挂载子组件,这样子组件created触发时就可以直接拿到完整数据:

<!-- 父组件模板 -->
<SelectWithSearch 
  v-if="cityOptions.length" 
  :options="cityOptions" 
  :label="你的标签值"
/>

方法2:子组件监听options变化获取数据

如果子组件需要提前渲染,不能等待数据加载再挂载,可以在子组件内添加watch监听options的变化,拿到更新后的完整数据,可通过immediate配置项让监听回调在组件初始化时立即执行一次:

// 子组件script
export default {
  props: {
    label: { type: String, required: false },
    options: { type: Array, required: true },
  },
  watch: {
    options: {
      immediate: true,
      handler(newOptions) {
        // 此处newOptions即为最新的完整数组,你的业务逻辑写在这里
        console.log('完整options数据:', newOptions)
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:05