vue父组件异步请求获取数据传递给子组件,子组件能获取并渲染数据到页面,但是会报错怎么解决呢?

请教,父组件ajax异步请求获取数据

然后传递给子组件

子组件在页面中渲染使用了父组件传过来的data对象中的img属性

子组件能获取到数据并渲染数据到页面,但是会报错,怎么解决呢。
代码:
clipboard.png

clipboard.png
报错如下:
clipboard.png

页面会报错说找不到avatar属性,报错如下,但是页面上又能渲染出图片,我猜想可能是页面在渲染子组件的时候 ajax还没有返回对象,但是子组件已经渲染过去了所以报错,接着ajax对象拿到数据在传到子组件,子组件在更新所以拿到了图片,请教大佬,是这样吗?或者说怎样处理呢。

回答:

谢谢各位!感谢,提问之前我还怕麻烦别人,没想到大家这么有爱,爱你们。
已经解决了,总结一下:
这个昨晚我在提问后,又试了试
1.对父组件加了一个 v-if,也就是判断数据是否为空,为空就不渲染,也能解决了
2.如前面几位大佬说的,加一个为空的默认值,这样就很好的解决了,如下

seller:{
              type:Object,
              default:function(){
                  return {
                      seller: {
                      avatar: ''
                    }
                  }
              }
        }

回答:

需要加default值
clipboard.png

回答:

  1. 看打印顺序,就是先判断是否有 seller,没有所以报错了;后获取的 seller,所以打印出 Object 并且有显示;
  2. 你可以自己假设一个空值:
 seller: {
    seller: {
      avatar: ''
    }
 }

回答:

是你说的那样,你可以加个默认值

seller:{
              type:Object,
              default:function(){
                  return {
                      seller: {
                      avatar: ''
                    }
                  }
              }
        }

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注