Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
406 views
in Technique[技术] by (71.8m points)

关于vue父组件传入子组件的数据警告问题,求助!

这里传入子组件的weatherData是异步获取的,传入子组件使用后,如果在子组件的模板中没有加v-if就会出现如下报错信息,我试了下,如果父组件传入的不是异步的数据就没问题,如果是异步的才会这样
clipboard.png

父组件

<v-header :weather="weatherData"></v-header>


export default {
  name: 'app',
  data(){
    return {
      weatherData: {}
    }
  },
  created(){
    var url = 'https://free-api.heweather.com/v5/weather?city=深圳&key=keycode';
    this.$http.get(url).then((response) => {
      response = response.body.HeWeather5[0];

        if(response.status == 'ok'){
          this.weatherData = response.now;
        }
    });
  },

  components: {
    vHeader: Header
  }
}
</script>

子组件

这里必须加一个v-if,如果不加就会出现警告信息
 <div class="weather-title" v-if="weather.cond">
    {{weather.cond.txt}}
  </div>

<script>
export default {
  name: 'header',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  props: {
    weather: {
      type: Object
    }
  }
}
</script>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

这是因为组件生成时,传入的数据还没有从服务端获得。解决方法:
1、在页面没有获得信息之前,不显示组件,获得信息后再添加组件
2、给weather一个初始值,内容为{cond: {txt: ''}}


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...