讓我們一起實現一個文件選擇組件
前言
花了點時間利用廣度與深度優先搜索算法實現了一個文件選擇插件,支持無限層次的文件夾嵌套,已開源并打包上傳到了npm。
本文將跟大家分享一下這個插件,歡迎各位感興趣的開發者閱讀本文。
插件安裝
yarn add file-folder-selector
# or
npm install file-folder-selector --save
插件使用
在你需要使用此插件的業務代碼中導入插件。
<script setup lang="ts">
import { FileSelect } from "file-folder-selector";
// 組件的樣式文件,可以在項目的業務代碼內導入,也可以在項目的入口文件導入
import "file-folder-selector/dist/style.css";
</script>
在template中使用即可。
<template>
<file-select />
</template>
完成上述步驟后,啟動項目即可看到如下所示的效果。
效果圖
參數說明
插件接收5個可選參數:
- fileData 文件樹結構數據
title 文件名, 值為string類型
id 文件id, 值為string類型
type 文件類型, 值為"file"或"folder"
imgSrc 文件圖片地址(可選參數),值為string類型
childData 子文件數據(可選參數),值為array類型,如果type為"folder",則傳此參數,數組中的每一項類型就為fileData的類型。
- defaultFolderImage 默認的文件夾圖標,值為string類型
- defaultFileImage 默認的文件圖標,值為string類型
- defaultSearchImage 默認的搜索圖標,值為string類型
- defaultFolderPathImage 默認的文件夾路徑圖標,值為string類型
注意:插件默認的圖標更換不支持svg格式的圖片,插件的fileData參數可參考源碼中的FileConfig.json文件。
插件提供了1個回調函數:
- getSelectedFile 獲取已選擇的文件,它有1個參數selectedArray,它值為array?類型,數組中的每一項類型為:{title: string; id: string; type: string }
具體的使用方法可以參考源碼中的 file-select-test.vue 文件。