问题描述:使用做头像的时候后,发现切换后原有的头像都不显示了。头像不更新…数据更新之后,图片并没有更新, el-avatar图片更新会有img标签,而图片上传成功后并没有img标签
于是百度查了一下 el-avatar绑定key,值为图片地址
<el-avatar class="marr5 comment-photo" :size="30" :src="common.imgPath + userInfo.picture" :key="common.imgPath + userInfo.picture" > <!-- 代码省略 --> </el-avatar>
但是我另辟蹊径,图片上传成功后强制更新
handleAvatarSuccess(file) { this.ruleForm.headImage = file.data this.$forceUpdate() }
forceUpdate就是重新render。有些变量不在state上,但是你又想达到这个变量更新的时候,刷新render;或者state里的某个变量层次太深,更新的时候没有自动触发render。这些时候都可以手动调用forceUpdate自动触发render。所以建议使用immutable来操作state,redux等flux架构来管理state。 迫使Vue实例重新渲染。注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件。在vue官网中就是这样解释的。