附带以下代码片段:

        <template v-if="tryIsMobile" >
          <div class='device device-mobile-portrait' :class="deviceClass">
            <div class="device-scroller-container">
              <div class='device-scroller'>
                <img id='tryit-img-mobile' :src="srcUrlMobile" v-on:load="onImgLoad" v-on:error="onImgError"/>
              </div>
            </div>
          </div>
        </template>

        <template v-else>
          <div class='device device-tablet-landscape' :class="deviceClass" >
            <div class="device-scroller-container">
              <div class='device-scroller'>
                <img  id='tryit-img-tablet' :src="srcUrlTablet" v-on:load="onImgLoad" v-on:error="onImgError"/>
              </div>
            </div>
          </div>
        </template>

这段代码有条件地呈现两个图像中的一个.一些用户操作会导致实际显示的图像被切换.

我看到的是:当从tryit-img-mobile切换到tryit-img-tablet时,作为tryit-img-mobile的一部分加载的图像将立即以不同的尺寸显示.然而,在图像加载其新源:src="srcUrlTablet"期间,仍然显示具有src :src="srcUrlMobile"的图像.

这可能是因为Vue对两个模板使用相同的img标记.我如何防止Vue这样做,而是使用单独的img标签?

推荐答案

在这种情况下,Vue使用一个特殊的key属性,告诉它不要重用同一个元素. for each 元素赋予该属性一个唯一的值,Vue将不再重用同一元素:

<div v-if="tryIsMobile"
     class="device device-mobile-portrait"
     :class="deviceClass"
     key="mobile"
>
    ...
</div>
<div v-else
     class="device device-tablet-landscape"
     :class="deviceClass"
     key="tablet"
>
    ...
</div>

Vue.js相关问答推荐

无法解析组件:google—pay—button

如何使用 vueJS 上的 ref( ) 函数创建二维数组定义?

无法在cPanel/SSH上构建 | Laravel + Vue优化

Vue 3 范围滑块中的多个值

使用 vue / nuxt js 切换 fontawesome 图标

使用 cypress 进行 e2e 测试的 vuejs 期间出现 Webpack 错误

如果在 VueJS/VuetifyJS 中切换switch,则调用函数

理解 VueJS 中的组件 props

如何从 Vuex 状态使用 Vue Router?

如何在 Vue.js 中传递 $router.push 中的数据?

Amazon EC2 错误:监听 EACCES 0.0.0.0:80

如何在 VUE 应用中使用 sass?

在加载数据之前触发mounted方法 - VueJS

输入文件 Select 事件在 Select 同一文件时未触发

如何从浏览器的源中删除 webpack://

我们可以像在 Angular 中一样创建 Vue.js 组件时将 HTML、JS 和 CSS 文件分开吗?

如何在 VeeValidate 中自定义错误信息(字段名称)?

如何在 vue3 中的setup方法中发出事件?

vuejs 复制数据对象和删除属性也会从原始对象中删除属性

在 Vue 中使用事件修饰符 .prevent 提交表单而不进行重定向