1
我正在使用Advanced-Async-Components加載async component
加載後的應用程序。所以,我曾嘗試下面的代碼:Vue異步組件加載沒有延遲,無論'延遲'參數
Index.vue
<template>
<div class="">
<Async></Async>
</div>
</template>
<script>
// async component
import LoadComp from '@/components/Loading'
import ErrorComp from '@/components/Error'
const Async =() => ({
// The component to load. Should be a Promise
component: import('@/components/Async'),
// A component to use while the async component is loading
loading: Load,
// A component to use if the load fails
error: ErrorComp,
// Delay before showing the loading component. Default: 200ms.
delay: 4000, // <--- this is not effecting the loading of component
// The error component will be displayed if a timeout is
// provided and exceeded. Default: Infinity.
timeout: 3000
})
export default {
components: {
Async
}
}
</script>
Async.vue
<template lang="html">
<div class="">
Lorem ipsum dolor sit amet, con .... very larger string/data
</div>
</template>
<script>
export default {
}
</script>
<style lang="css">
</style>
上面的代碼工作正常,但它沒有delay
參數的影響( Index.vue)。根據官方文檔delay
是延遲顯示加載組件之前。它應該在4000ms
之後加載組件,但它會立即加載。
這是怎麼發生的?
除了使用setTimeout
之外,還有其他方法可以實現嗎?
附加信息
我以前webpack
模板生成使用vue-cli
Vue version : ^2.4.2
感謝哥們,雖然我已經嘗試過'setTimeout',只是想嘗試更好的方法。但現在這只是我想的方式。只有一個問題,在延遲時間後觸發setTimeout?如果上面代碼中的'setTimeout'與'delay'相比要少很多,那麼該怎麼辦呢? –
上面例子中的setTimeout函數是在延遲被指定後觸發的。如果組件的加載時間少於延遲量,則加載組件將不會顯示。 – thanksd