vue没有将数据加载到子组件中

Posted

技术标签:

【中文标题】vue没有将数据加载到子组件中【英文标题】:vue not loading data into child component 【发布时间】:2021-11-02 19:54:17 【问题描述】:

我很难理解 vue 的方法。在我的 put-request 中,用户可以编辑、删除图像。在父组件中,get-request 加载图像并通过属性推送到图像库(子组件)。在我的设置中,console.log 始终为空。

//PARENT COMPONENT
<template>
   <div class="form-group">
   <image-gallery :serverData="serverMap"/>
</div>    
</template>
<script>
   import ImageGallery from './ImageGallery.vue';

   export default 
   components:ImageGallery,

data: () => (
    serverMap: 
        title: '',
        file: ''
     

),
mounted () 
    //AJAX ETC get servermap

    .then((response) => 
        this.serverMap = response.data
    )
    

只是一个正常的异性恋亲子情况。这里在子组件下

<template>

</template>
<script>
export default 
name: 'ImageGallery',

//incoming data
props: 
    serverData: 
        type: Object,
        default () 
            return 
                hasLabels: true,
                isHorizontal: false
            
        
    
,



created: function () 
    this.loadImages()
,
methods: 
    loadImages () 
        console.log(this.serverData.file)
        //do something with the serverData

        //prepare for fileReader function
        //together with new image validation
    

方法'loadImages'应该通过计算自动解除serverData。但不是。谁能帮忙?

【问题讨论】:

【参考方案1】:

存在竞争条件。

在数据可用之前不渲染孩子; serverMap 需要为 null 而不是空对象,以便与填充对象区分开来:

<image-gallery v-if="serverMap" :serverData="serverMap"/>

或者延迟孩子的数据访问直到它可用,而不是立即在created中这样做:

watch: 
  serverData(data) 
    if (data)
      this.loadImages()
  

【讨论】:

底层解决方案对我有用。我必须提高我在计算、安装等方面的理解!

以上是关于vue没有将数据加载到子组件中的主要内容,如果未能解决你的问题,请参考以下文章

将 vue 中的数据从单个父组件传递到子组件

将数据从父模式传递到子模式 - Vue.js

重新加载另一个 Vue 组件内部的 Vue 组件

Vue组件未加载数据

vue.js 一次只能将一个动态数据对象加载到组件中

VueJS:通过路由器视图将数据从根元素传递到子组件