vue 父组件通过ref调用子组件方法 更新数据后,视图不更新

发布于 2022-09-07 03:57:35 字数 1205 浏览 23 评论 0

vue 父组件通过ref调用子组件方法 更新数据后,视图部更新

而在子组件mounted(){}里调用统一方法可以更新

vue版本2.5.15

parent.vue

this.$nextTick(() => {
        this.$refs.carInfo.getDetail(data)
      })

child.vue

data () {
    return {
      imgUrl: '',
      plate_number: '',
      car_detail: {
        serial_number: '',
        plate_type: '',
        china_brand: '',
        model: '',
        car_type: '',
        color: '',
        use_for: '',
        inspection_date: ''
      },
      car_owner: {
        name: '',
        identification_number: '',
        quasi_drive_type: '',
        expire_date: '',
        cumulative_score: '',
        license_status: ''
      },
     }
    },
methods: {
    getetail(){
        this.obj = res.content // 这里父组件$refs.name.getDetail()调用时控制台数据改变但是视图没变
    }
},
 beforeUpdate () {
    console.log('before update', this.$data)
  },
  updated () {
    console.log('update', this.$data)
  },
mounted(){
    // setTimeout(() => { 这里调用可以更新视图
        // this.getDetail()
        // }, 3000)
    }

clipboard.png

用Vue.$set(...), 也不起作用

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

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

发布评论

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

评论(7

如果没有 2022-09-14 03:57:35
this.$nextTick(() => {
        this.$refs.carInfo.getDetail(data)
      })

这段代码,在什么时候被调用的呢?

养猫人 2022-09-14 03:57:35
getetail(res){//是不是少了参数
    this.obj = res.content 
}
我喜欢麦丽素 2022-09-14 03:57:35

obj的属性没有显示的初始化导致的吧如果子组件的obj直接定义的、

data(){
    return{
        obj:{}
    }
}

你通过调用方法改变obj是不会将obj的属性设置成响应式的,vue检测不到,你应该预先给出需要动态变化的属性
data(){

    return{
        obj:{
            a:'',
            b:''
        }
    }
}
Saygoodbye 2022-09-14 03:57:35

vue不会检测到 数组或者对象 数据的改变,

this.$set(object, key, value) //对象
this.Array.push({ message: 'Baz' })  // 数组

文档地址
官方文档

染火枫林 2022-09-14 03:57:35

image.png可能是key值的问题,不要使用时间戳,我将父组件的key值改为index就好了

沧笙踏歌 2022-09-14 03:57:35

我现在也遇到相同的问题 你现在解决了吗 请教下

童话 2022-09-14 03:57:35

你这个解决了吗

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