ios闪屏问题 vue_解决vue更新默认值时出现的闪屏问题

在Vue项目中,对于一个展示用户个人信息的页面。有以下需求,需要判断用户个人信息是否填充过,如果填充过,需要在页面中展示已填充项(未填充项不展示);如果未填充过,需要在页面中显示另外一种元素(提示用“去完善”个人信息)。

这时候,我们在页面中有如下元素:

// 这里展示用户已填充的信息内容

no_info.png

data中userExist有默认值——false:

export default {

name: "healthData",

data() {

return {

userExist: false, // 标记用户是否已填充个人信息

}

};

},

而用户到底有没有填充过个人信息是需要在mounted中通过接口从后端获取数据才可以知道,这里如果是填充过,后端会返回状态码200;如果没有填充过,后端会返回状态码201。

axios.get('/userInfo').then(res => {

if (res.data.data && res.data.status == 200) {

this.userExist = true

// 这里填充对所返回用户数据的解析

}

}

在上面这种代码情况下,因为userExist默认值为false,所以默认需要展示无数据的页面元素。又因为userExist值得变更需要通过axios请求的方式获取,就会有延时问题,即产生页面闪烁的情况。

解决方式:

这种问题我们就可以通过如下方式解决,因为无数据是页面中的元素较少,我们可以跟它们中的图片路径、文字等内容的初始值设置为空,请求结束时再为其重新赋值。

页面元素部分:

// 这里展示用户已填充的信息内容

在data中进行声明:

export default {

name: "healthData",

data() {

return {

userExist: false, // 标记用户是否已填充个人信息

noDataTip: { // 用户未填写个人信息时要显示的页面元素的填充内容

imgSrc: '',

tipInfo: '',

jumpInfo: ''

}

}

};

},

重新赋值的过程:

axios.get('/userInfo').then(res => {

if (res.data.status == 10001) {

return context.noDataTip = {

imgSrc: require('../../images/no_data.png'),

tipInfo: '暂无基本资料数据',

jumpInfo: '去完善'

}

}

if (res.data.data && res.data.status == 200) {

this.userExist = true

// 这里填充对所返回用户数据的解析

}

}

通过这种方式,用户就不会看到闪烁的情况了。但是,上面这种方式有一个值得注意的地方,img标签的src属性如果想要通过属性绑定的方式给其动态赋值,有两种处理方式:1.通过上面代码中的 require('') 方式;2.通过书写绝对路径的方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值