【Vue】vue想要先加载完所有数据再渲染页面

我的项目使用vue,我的图片链接需要通过接口返回,不想要页面渲染出来图片再进行刷新。试过在create里面和routebeforenter里面发请求,但是貌似都没有用,有人提示我用懒加载,但是我记得懒加载是给一个占位图,这个并不是我想要的效果。我想要一个空白页面做过渡,等我的数据加载完之后空白页面消失,页面直接渲染出来就是所有的东西

【Vue】vue想要先加载完所有数据再渲染页面

【Vue】vue想要先加载完所有数据再渲染页面

【Vue】vue想要先加载完所有数据再渲染页面

【Vue】vue想要先加载完所有数据再渲染页面

回答

v-if 数据出来在渲染

理论上是在created方法中请求接口是可以的,不知道你的代码是如何写的

routebeforenter 怎么就不行了? 你 next 写在哪?
实在不行 v-if 了解一下,等数据加载完了再渲染啊

vif判断~数据接收到了再渲染

同步加载数据,在最后一个请求成功之后再一一赋值即可。
ajax没法做同步,你需要引入promise,推荐使用官方推荐的axios

例如用axios请求数据:

data(){

return{

data1:'',data2:'',data3:''

}

}

// methods:

var data1, data2, data3;

axios.get('/user?ID=12345')

.then(function (res){

data1 = res.data

})

.then(function (res){

data2 = res.data

})

.then(function (res){

// 最终请求成功

data3 = res.data

this.data1 = data1

this.data2 = data2

this.data3 = data3

})

.catch(function (error) {

console.log(error);

});

beforeRouteEnter肯定能实现你的需求的,而且我觉得你写的没什么问题,你说的图片位置明显的刷新的感觉的话你可以在这个钩子中加个loading试试看,或者按楼上说的img.onload方法,但是并不推荐这个方法,因为你只有一个图片还好操作,如果多张图片这个地方就 尴尬了,建议用图片懒加载

body添加个v-cloak呢

以上是 【Vue】vue想要先加载完所有数据再渲染页面 的全部内容, 来源链接: utcz.com/a/73575.html

回到顶部