vue父子组件传值,父组件值改变,值为空数组时子组件渲染失效

本文讲述了在Vue中遇到的父子组件传值问题,当父组件传递一个空数组给子组件时,子组件渲染失效。作者尝试了多种解决办法,包括在父组件使用v-if判断、子组件监听、子组件v-if判断以及尝试子组件重新渲染,最终通过修改子组件接收值的方式成功解决问题。作者建议在子组件中使用对象形式的props接参以避免类似问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义子组件,在使用子组件时,向子组件传递数组类型的参数,子组件接收到数组之后对数据进行渲染。
而父组件的数值是不断变化的,点击按钮一次,获取一次值。
当数组不为空时,正常渲染,但是数组为空时,会保留上一次渲染。
问题刚遇到的时候,在网上看了很多文章,自己也做了很多尝试。

一、尝试一

  • 1.在父组件添加v-if判断,当数组为空时,不进行子组件的渲染。
    虽然这个方式可以解决问题,但是在项目中大量使用了该组件,那就需要在使用子组件的时候大量的添加判断,这种做法直接pass。

二、尝试二

三、尝试三

  • 3.在子组件渲染之前添加v-if判断,有值渲染,无值不渲染。不成功。

四、尝试四

  • 4.想到了在vue生命周期中,子组件销毁,但是DOM元素还会继续存在,data数据以及事件绑定等已经失效。感觉这是一个思路,所以对子组件进行重新渲染,尝试文章链接如下:Vue在父组件中重新渲染子组件,不适用,无解。

五、最终

  • 5.修改子组件接收值时的方式,就直接成功了。。。。如下:
    在这里插入图片描述
props:{
        modalFileArr:{
            type:Array,
            defaul:()=> []
        },
        fileObj:{
            type:Object,
            default:()=>{
                return {}
            }
        },
    },

解决问题之后,想知道为什么,于是去官方文档寻找答案:只是知道此方式是给传入数据添加了类型检查与附带默认值,但是对于我这个问题没有太多的原理解答,下一步会继续关注这个问题,同时也会即使更新,如果有大佬知道为什么,希望告知。
在这里插入图片描述

六、忠告

在父子组件传值中,在子组件中建议使用props是对象形式的接参方式,专业可以避免很多不必要的麻烦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值