色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue獲取數據滯后再渲染

高雨晴1年前7瀏覽0評論

使用Vue獲取數據時,經常會遇到獲取數據的速度比渲染組件的速度慢的情況,這就導致了數據無法及時渲染到頁面上的問題。原因是頁面渲染時,Vue組件已經被渲染出來了,但是數據還在請求中。這種情況下,簡單的在mounted鉤子函數中獲取數據是不可取的。下面,我們來介紹一些解決數據渲染滯后的方法。

1. 使用v-if指令

<template>
<div v-if="loaded">
<ul>
<li v-for="item in items" :key="item.id">
{{ item.name }}
</li>
</ul>
</div>
<div v-else>
加載中...
</div>
</template>
<script>
export default {
data () {
return {
items: [],
loaded: false
}
},
methods: {
fetchData () {
axios.get('/api/items')
.then(response => {
this.items = response.data
this.loaded = true
})
}
},
mounted () {
this.fetchData()
}
}
</script>

2. 使用v-cloak指令

<template>
<div v-cloak>
<ul>
<li v-for="item in items" :key="item.id">
{{ item.name }}
</li>
</ul>
</div>
</template>
<style>
[v-cloak] {
display: none;
}
</style>
<script>
export default {
data () {
return {
items: []
}
},
methods: {
fetchData () {
axios.get('/api/items')
.then(response => {
this.items = response.data
})
}
},
mounted () {
this.fetchData()
}
}
</script>

3. 使用Vue的異步組件

<template>
<div>
<my-component v-if="loaded"></my-component>
</div>
</template>
<script>
export default {
data () {
return {
loaded: false
}
},
components: {
'my-component': () => import('./MyComponent.vue')
},
methods: {
fetchData () {
axios.get('/api/items')
.then(response => {
this.loaded = true
})
}
},
mounted () {
this.fetchData()
}
}
</script>

以上三種方法都可以解決數據渲染滯后的問題,具體選擇哪一種方法取決于具體情況。使用v-if指令適用于需要添加加載中動畫的情景,使用v-cloak指令是最簡單的方法,使用異步組件是Vue提供的官方解決方案。