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

发布于 2022-09-06 15:37:03 字数 708 浏览 14 评论 0

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

然后传递给子组件

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

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

clipboard.png
报错如下:
clipboard.png

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

谎言月老 2022-09-13 15:37:03

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

seller:{
              type:Object,
              default:function(){
                  return {
                      seller: {
                      avatar: ''
                    }
                  }
              }
        }
再浓的妆也掩不了殇 2022-09-13 15:37:03

需要加default值
clipboard.png

软糖 2022-09-13 15:37:03
  1. 看打印顺序,就是先判断是否有 seller,没有所以报错了;后获取的 seller,所以打印出 Object 并且有显示;
  2. 你可以自己假设一个空值:
 seller: {
    seller: {
      avatar: ''
    }
 }
从﹋此江山别 2022-09-13 15:37:03

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

seller:{
              type:Object,
              default:function(){
                  return {
                      seller: {
                      avatar: ''
                    }
                  }
              }
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文