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

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

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

clipboard.png

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

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

回答:

子组件挂载的时候,这个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...
        }
      }
    },

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注