解决子组件获取不到父组件传值问题

最近自己在用vue仿写QQ音乐是遇到一个问题:父组件往子组件里面传了3个值,前两个在子组件里面能获取到,最后一个怎么都获取不到。

(上图这是父组件往子组件传的三个值)

(这是父组件里面获取song这个字段的方式)
在百度之后才知道 异步从接口里取的,那这个组件在任何生命周期里都取不到,而应该在接口调取后取到。
但是如果在子组件再调一次接口虽然能解决问题,但明显很不优雅,于是有了如下两个解决方案

  • 在组件上加上v-if=”song.length”,可以确保song有值后调用,然后你就可以在生命周期created里面取到值了。
  • 可以参考vue官方文档-异步组件这一块 Vue.js-异步组件 来实现。

下面是第一种解决方案的代码:

1
2
3
4
5
6
7
8
<template>
<transition name='slider'>
<div class="singerDetail">
<musicList :avater='singer.avater' :title='singer.name' :songList='song' v-if='song.length'> //加上v-if确保song有值
</musicList>
</div>
</transition>
</template>

第二中解决方案异步组件暂时还没研究懂,这个坑等我研究懂了再填…


解决子组件获取不到父组件传值问题
https://xypecho.github.io/2018/04/07/解决子组件获取不到父组件传值问题/
作者
很青的青蛙
发布于
2018年4月7日
许可协议