千家信息网

vue父组件数据更新子组件相关内容未改变问题怎么解决

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要介绍"vue父组件数据更新子组件相关内容未改变问题怎么解决",在日常操作中,相信很多人在vue父组件数据更新子组件相关内容未改变问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2024年11月11日vue父组件数据更新子组件相关内容未改变问题怎么解决

这篇文章主要介绍"vue父组件数据更新子组件相关内容未改变问题怎么解决",在日常操作中,相信很多人在vue父组件数据更新子组件相关内容未改变问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"vue父组件数据更新子组件相关内容未改变问题怎么解决"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

父组件数据更新子组件相关内容未改变

父组件

在父组件中,根据后台给的数据(数组),v-for生成子组件

   

子组件(existProject)

因为有多条数据,所以有分页处理,在第一页中数据显示正常,但是在获得第二页数据并赋值给父组件的data后,子组件的信息保留的还是第一页的信息

解决方法,使用watch深度监听

    watch:{        itemprop:{            handler(n,o){                 console.log(this.itemprop);                var status = this.itemprop.status;                var showCondition = this.itemprop.showCondition;                // debugger;                this.status_tit = (function(status,showCondition) {                    if(status==0) {                                                return '未发布';                    }                    if(status==2 && showCondition==1)                    {                        // 已发布                        return  '收集中';                    }                    if(status==2 &&showCondition==0)                    {                        // 暂停                        return '已暂停';                    }                    if(status==2 &&showCondition==-1) {                        // 终止                        return '已终止';                    }                    if(status==2 &&showCondition==2) {                        // 问卷发布结束                        return '已结束';                    }                })(status,showCondition)            },            deep:true,            immediate:true,        }    }

watch可以监听子组件的数据变化,数组或者对象要用深度监听,字符串什么的不用深度监听,这样就可以在分页切换数据后,就不会保留原有的信息,而是新的信息了

循环中子组件不更新问题

解决方法

这是Element-UI的一个bug,解决方案是从el-table中增加一个row-key属性,并为row-key设置一个能唯一标识的字段名。

1.这个可以是数据库的id字段

2.给table增加一个随机数的key

到此,关于"vue父组件数据更新子组件相关内容未改变问题怎么解决"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0