Vue父组件向子组件传值的问题

发布于 2022-09-06 12:50:45 字数 658 浏览 20 评论 0

问题现象:

父组件调用API, 将结果赋值给controller, 然后通过:weather="controller", 方式传递给子组件处理并显示,问题是API还没返回结果,子组件已经渲染了,并且附件API返回数据之后,子组件也并没有重新渲染。

请问怎么能等到父组件数据获取完毕之后,再渲染子组件呢??

代码

父组件:
<template>
    <div>
        <weather :weather="controller"></weather>
    </div>
</template>
子组件:
export default {
        props:['weather'],
        data() {
            return {
                weatherData: this.weather,
                loading: true
            };
        },
      .....

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

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

发布评论

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

评论(4

骄傲 2022-09-13 12:50:45
父组件:
<template>
    <div>
        <weather :weather="controller" v-if="controller"></weather> 
    </div>
</template>

条件渲染,要在子组件上判断一下,如果controller存在,那么开始渲染子组件。前提是你定义controller的时候,它的值为“”或者null或者其他默认的隐式转换后为false的初始值

提赋 2022-09-13 12:50:45

你可以用在子组件中使用watch,来监测父组件传过来的数据,等父组件传入数据的时候,子组件再进行处理即可!

韶华倾负 2022-09-13 12:50:45

子组件渲染方法

initWebPage(){
    //一系列在获取到api之后的操作
}

父组件

<weather :weather="controller" ref="weather"></weather>

methods:{
    getApiData(){
      api.get(xxx).then(res=>{
          this.controller = res.data;
          this.$refs.weather.initWebPage();//获取数据成功 调用子组件中的渲染方法
      })
    }

} 
故人爱我别走 2022-09-13 12:50:45

主要的父组件相关逻辑代码没贴出来

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