uni-app uni-file-picker通过refs调用clearFiles(index:Number)方法提示clearFiles is not a function

uni-app uni-file-picker通过refs调用clearFiles(index:Number)方法提示clearFiles is not a function

示例代码:

<uni-file-picker :ref="`filePicker`+index" title="气瓶图片" :limit="4" :value="gasImgs[index]"  
autoUpload="false" :imageStyles="imageStyles" [@select](/user/select)="handleSelect(index,$event)"
                @delete="handleDelete(index,$event)" @success="handleSuccess(index,$event)">
    <image src="/static/upload.png" style="width: 90px;height: 90px;" mode="aspectFit"></image>
</uni-file-picker>  

```javascript
this.$refs["filePicker0"].clearFiles(0);

操作步骤:

<uni-file-picker :ref="`filePicker`+index" title="气瓶图片" :limit="4" :value="gasImgs[index]"  
autoUpload="false" :imageStyles="imageStyles" [@select](/user/select)="handleSelect(index,$event)"
                @delete="handleDelete(index,$event)" @success="handleSuccess(index,$event)">
    <image src="/static/upload.png" style="width: 90px;height: 90px;" mode="aspectFit"></image>
</uni-file-picker>  

```javascript
this.$refs["filePicker0"].clearFiles(0);

预期结果:

<uni-file-picker :ref="`filePicker`+index" title="气瓶图片" :limit="4" :value="gasImgs[index]"  
autoUpload="false" :imageStyles="imageStyles" [@select](/user/select)="handleSelect(index,$event)"
                @delete="handleDelete(index,$event)" @success="handleSuccess(index,$event)">
    <image src="/static/upload.png" style="width: 90px;height: 90px;" mode="aspectFit"></image>
</uni-file-picker>  

```javascript
this.$refs["filePicker0"].clearFiles(0);

实际结果:

Uncaught (in promise) TypeError: _this.$refs.filePicker0.clearFiles is not a function
at eval

bug描述:

uni-file-picker通过refs调用clearFiles(index:Number)方法提示clearFiles is not a function  at eval  uni-ui为最新版本1.5.7

更多关于uni-app uni-file-picker通过refs调用clearFiles(index:Number)方法提示clearFiles is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

:ref="filePicker+index"这个里面的filePicker是个变量吗?

更多关于uni-app uni-file-picker通过refs调用clearFiles(index:Number)方法提示clearFiles is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中使用uni-file-picker组件时,如果你尝试通过refs调用clearFiles(index: Number)方法但遇到了“clearFiles is not a function”的错误,这通常意味着你尝试调用的方法不存在于组件的API中,或者你的refs使用方式有误。

首先,需要明确的是,uni-file-picker组件本身并没有直接提供一个名为clearFiles的方法。如果你希望清除已选中的文件,你应该通过组件的value属性来控制。

以下是一个通过修改value属性来清空文件的示例代码:

<template>
  <view>
    <uni-file-picker
      ref="filePicker"
      :files="files"
      @change="onFileChange"
    />
    <button @click="clearFiles">清空文件</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      files: [] // 存储选中的文件列表
    };
  },
  methods: {
    onFileChange(event) {
      this.files = event.detail.files; // 更新选中的文件列表
    },
    clearFiles() {
      // 通过设置空数组来清空文件
      this.files = [];
      // 如果需要重置组件内部状态,可以考虑使用$refs直接操作DOM或组件实例(但不推荐直接操作内部状态)
      // 注意:这里不能直接调用不存在的 clearFiles 方法
      // this.$refs.filePicker.clearFiles(); // 这会报错,因为 clearFiles 方法不存在

      // 替代方案:如果组件有提供重置功能的方法(如reset),则使用之
      // this.$refs.filePicker.reset(); // 假设reset方法存在,实际使用时需确认

      // 由于uni-file-picker没有提供reset方法,我们通常通过修改value属性(即this.files)来控制
    }
  }
};
</script>

在上述代码中,我们通过value属性(即this.files)来管理选中的文件列表。当用户点击“清空文件”按钮时,我们简单地将this.files设置为空数组,从而实现了清空文件的效果。

如果你确实需要调用组件内部的方法(尽管uni-file-picker没有提供clearFiles方法作为公开API),你应该查阅该组件的官方文档,确认是否有提供类似功能的方法,并遵循文档中的使用方式。在大多数情况下,通过修改绑定到组件的属性(如value)是控制组件状态的最佳实践。

回到顶部