vue父组件数据更新子组件相关内容未改变问题(用watch解决)
父组件数据更新子组件相关内容未改变
父组件
【vue父组件数据更新子组件相关内容未改变问题(用watch解决)】在父组件中,根据后台给的数据(数组),v-for生成子组件
子组件(existProject)
{{itemprop.title}}{{ status_tit }}收集份数:{{itemprop.asyncCount}}份{{createtime}}编辑 发布 数据 删除
因为有多条数据,所以有分页处理,在第一页中数据显示正常,但是在获得第二页数据并赋值给父组件的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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- Vue3+TS实现语音播放组件的示例代码
- vue关于this.$refs.tabs.refreshs()刷新组件方式
- SpringBoot性能怎样优化
- 简单了解一下pinia的结构
- vue实现静态页面点赞和取消点赞功能
- vue中keep-alive组件实现多级嵌套路由的缓存
- vue学习|Vue基础实现bilibili移动端页面
- javascript|Vue.js全家桶仿哔哩哔哩动画 (移动端APP)
- vue|VUE哔哩哔哩移动端项目使用vant 实现发布功能(上传文件)
- 开源项目|Vue项目实战 —— 哔哩哔哩移动端开发