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>