chooseLeftFilm() { this.isLoading=true this.redirectToResultKing() // 這是 mixins 中的方法(都很好,它有效) },</pre> <p>//它將永遠旋轉</p> <p>幫我,如何更好地製作載入動畫?</p> <p>我的混入(mixins):</p> <pre class="brush:php;toolbar:false;">匯出預設值 { 方法: { 更新電影(){ // 這裡我隨機從 Vuex 中取得 2 張圖像,然後將它們刪除等等... this.currentCountKing ; this.allFilmsKingCopy = this.allFilmsKingCopy.filter(val => val !== this.secondFilm) this.secondFilm = this.allFilmsKingCopy[Math.floor(Math.random() * this.allFilmsKingCopy.length)] }, 重定向到結果王(){ if (this.currentCountKing === this.ALL_FILMS.length - 1) { this.isEndGameKing = true } 別的 { this.updateFilm() } } }, 計算:{ ...mapGetters(['ALL_FILMS']), },</pre> <p>我的 Vuex:</p> <pre class="brush:php;toolbar:false;">匯出預設值 { 狀態: { 電影:[]、 }, 行動:{ 異步 getFilms({commit}) { const data = 等待 fetch(URL); const dataResponse = 等待 data.json(); const 電影=dataResponse.data 提交(“setData”,電影) }, }, 突變:{ setData(狀態,電影){ state.films = 電影 }, }, 吸氣劑:{ ALL_FILMS(狀態){ 返回狀態電影 }, } }</pre> <p><br />></p>
P粉5886603992023-08-04 13:43:52
常見的方法是使用Image物件載入圖片,然後使用load事件等待資料載入完成,在載入過程中顯示載入動畫。然後,您可以設定圖片的URL,圖片將立即更新:
const imgUrl = 'https://picsum.photos/200?random=' let imgCount = 0 const App = { template: ` <div style="display: flex;"> <div> <button @click="loadImage">Load new image</button> </div> <div v-if="isLoading">LOADING....</div> <img :src="src"/> </div> `, data() { return { isLoading: false, src: null, } }, methods: { async loadImage() { this.src = null this.isLoading = true const img = new Image() img.src = imgUrl + imgCount++ await new Promise(resolve => img.onload = resolve) this.src = img.src this.isLoading = false } }, created() { this.loadImage() }, } Vue.createApp(App).mount('#app')
<div id="app"></div> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>