vue 父给子组件传值 ,子组件打印为空

clipboard.png
父组件传了几个值
在html for循环渲染没问题 能出来

clipboard.png
但是我此时要在子组建的mounted用到这个数组
打印的出来是空的 但是html是可以循环出来值的

clipboard.png

但是我随便修改一下无关紧要的东西保存一下 这个值就会出现了
怎么第一次就能接收到它呢??
我没接收到他 为什么html能渲染出来这个值??
求大神解答

clipboard.png
同样一起传过来的数据 数组显示不出来 字符串就有值

阅读 16.4k
9 个回答

子组件挂载的时候,这个peopleLsita在父组件里也是为空的,后来父组件做了类似请求之类的工作后,更新了这个peopleLsita,然后往子组件传递,所以一开始挂载的时候是peopleLsita是空,后来才有值,所以html看起来能渲染出来,实际它之前渲染过一次空的了,只不过两次时间间隔可能比较短。

watch 监听 peopleLsita,在watch中,使用 this.$nextTick()

你传递过来的这个值你确定在父组件以开始渲染的时候就有值吗?是不是值是你后来赋上去的或者从接口获得的?你可以用 vif 控制一下当这个值没有的时候不要渲染你的组件。

  1. 用 watch 获取值
  2. 用 computer 页面中展示

是不是子组件给定义了data

你可以这么写:peopleLisita.sync="peopleLsit" 这样写是为了实现父组件和子组件的通信

新手上路,请多包涵

前后渲染的问题,做下判断

新手上路,请多包涵

您好请问你这个问题是怎么解决的,我也遇到同样的问题了

watch: {
      peopleLisita (val, oldVal) {
        if (val !== oldVal) {
          dosomething...
        }
      }
    },
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题