我有一个包含带有作物功能的图像上传器的 vue 应用程序。上传裁剪图片成功,取回裁剪后的图片URL。但问题是当用户需要重新上传他们的图像时,画布仍然显示旧图像。当用户取消并重新上传图像时也会发生这种情况。
<template>
<div>
<a-row :gutter="16">
<a-col :span="12">
<img ref="image" :src="initialImage">
</a-col>
<a-col :span="12" align="center">
<p><strong>Preview</strong></p>
<img :src="updatedImage" class="preview-image">
</a-col>
</a-row><br />
<a-row :gutter="16">
<a-button type="primary" style="float: right;" @click="crop">Crop</a-button>
<a-button style="float: right; margin-right: 5px;" @click="cancel">Cancel</a-button>
</a-row>
</div>
</template>
<script>
import Cropper from 'cropperjs';
export default {
name: 'PostCropper',
props: {
uploadedImage: String,
},
data() {
return {
cropper: {},
updatedImage: {},
image: {},
initialImage: this.uploadedImage,
};
},
methods: {
crop() {
this.$emit('update-image', this.updatedImage);
},
cancel() {
this.$emit('cancel-upload');
},
},
mounted() {
this.image = this.$refs.image;
this.cropper = new Cropper(this.image, {
zoomable: false,
scalable: false,
aspectRatio: 1,
crop: () => {
const canvas = this.cropper.getCroppedCanvas();
this.updatedImage = canvas.toDataURL('image/png');
},
});
},
};
</script>
<style scoped>
.preview-image {
border-radius: 100px;
width:150px;
height:150px;
}
</style>
我已经尝试使用空字符串设置 initialImage 和 updatedImage ,但它仍然无法正常工作。取消或继续裁剪图像后我应该初始化什么?还是有另一种方法可以克服这个问题?我也使用了 vue watcher,但它仍然不起作用。唔。