javascript Vue问题将选项API转换为组合API

kd3sttzy  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(159)

我有一个用API编写的vue组件,它工作正常,当用户选择一张图片时,它就会显示在屏幕上。
我试图将此转换为使用合成API,但它不显示图像。
这是原始组件:

<script>
export default {
  name: 'imageUpload',
  data() {
    return {
          imageUrl: null
    }
  },
  methods: {
    onChange(e) {
      const file = e.target.files[0]
      this.imageUrl = URL.createObjectURL(file)
    }
  }
} 
</script>

<template>
    <input type="file" accept="image/*" @change="onChange" />
    <div id="preview">
      <img v-if="imageUrl" :src="imageUrl" />
    </div>
  </template>

这就是我试图把它转换成复合的方法,通过使用ref,然后用.value引用变量,我不确定我做错了什么。

<script setup>
import { ref } from 'vue';

let imageURL = ref(null);

const onChange=(e) =>{
  const file = e.target.files[0];
  imageURL.value = file;
}

</script>

<template>
    <input type="file" accept="image/*" @change="onChange" />
    <div id="preview">
      <img v-if="imageUrl.value" :src="imageUrl.value" />
    </div>
  </template>
6l7fqoea

6l7fqoea1#

.value只能在<script>中使用,在模板中,Vue会自动取消引用:

<img v-if="imageUrl" :src="imageUrl" />

此外,我认为您仍然需要为您的文件创建一个URL:

onChange(e) {
      const file = e.target.files[0]
      imageUrl.value = URL.createObjectURL(file)
    }

相关问题