我正在创建一个包含产品集合的页面。当用户单击其中一种产品的图像时,该产品的详细版本会滑入其中。
我正在使用vue更新图像的src以及产品ID,具体取决于所单击的产品。我发现有时-仅在iOS手机上,并且仅当我在生产模式下运行webpack时-不会使用新的图像src
属性或产品ID重新绘制HTML。控制台日志的确显示它正在更新我的变量,但是vue没有触发重绘。
我的产品网格设置如下:
<div v-for="product in products.items" class="column">
<div v-on:click="open(product)" :class="[{'soldout' : (product.inventoryCount == 0)},'image']">
<img :src="product.images[0].src" :alt="product.images[0].alt">
</div>
</div>
我的详细部分如下:
<div v-for="image in productImages" :key="image.src" class="slide">
<img :src="image.src" :alt="image.alt">
<button class="button" v-on:click="addToCart" :data-id="productID">Add to Cart</button>
</div>
我更新vue变量的函数如下:
open(product) {
this.productImages = product.images;
this.productID = product.variantId;
}
我的运行Webpack的gulp任务如下:
.pipe(webpack({
mode: `${mode}`,
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
},
plugins: [
new VueLoaderPlugin()
]
}))
我使用不同的任务来在开发或生产模式之间切换。
据我所知,当我处于开发模式时,它没有问题,但是当我注意到该问题时,一旦切换到生产模式。如果我执行this.productImages
或this.productID
的控制台日志,它们都将使用正确的信息进行更新,但是<img :src="image.src" :alt="image.alt">
和<button class="button" v-on:click="addToCart" :data-id="productID">Add to Cart</button>
都不会更新。
奇怪的是,它似乎只发生在iPhone上,并且完全取决于刷新。有时我需要刷新几页才能看到它破裂,有时它非常一致。
似乎也因电话而异。我的同事电话几乎每次刷新都有问题,但是我的电话需要几次刷新才能看到。其他人有没有处理过这样的问题,或者不知道可能是什么原因造成的?