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

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

一、尝试一

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

二、尝试二

三、尝试三

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

四、尝试四

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

五、最终

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

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

六、忠告

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

猜你喜欢

转载自blog.csdn.net/weixin_43242112/article/details/107468793
今日推荐