a file explorer component
npm install @rainetian/file-explorer
一个功能丰富的文件浏览器React组件,支持拖拽、编辑、排序等功能。
- 📁 文件树展示
- ✏️ 可编辑文件名
- 🔄 拖拽排序和移动
- ➕ 创建文件/文件夹
- ❌ 删除文件/文件夹
- 🎨 主题支持(暗色/亮色)
- 📱 响应式设计
- 🧩 丰富的API和自定义选项
``bash`
npm install @rainetian/file-explorer
`tsx
import FileExplorer, { INode, fileExplorerUtils } from '@rainetian/file-explorer'
import React, { useState } from 'react'
const filesData = {
'/public/index.html': '',
'/src/App.tsx': '',
'/src/main.tsx': '',
'/src/style.css': '',
'/package.json': '',
'/tsconfig.json': '',
}
const App = () => {
const [data, setData] = useState
const handleChange = (newData: INode[]) => {
setData(newData)
}
return (
export default App
`
组件提供了便捷的工具函数来处理文件数据格式转换:
`tsx
// 将扁平的文件映射转换为树形结构
const treeData = fileExplorerUtils.files2tree(filesData)
// 将树形结构转换回扁平的文件映射
const filesData = fileExplorerUtils.tree2files(treeData)
/// 提供了一个获取icon8 图标url的方法,可根据文件后缀自定义图标
const iconSrc = fileExplorerUtils.getFileIcon8Url('tsx')
`
| 属性名 | 类型 | 描述 |
| --- | --- | --- |
| data | INode[] | 树形结构的数据 |string \| number
| rootId | | 根节点ID |(newTree: INode[], changeParams: IFileExplorerChangeParams) => void
| onChange | | 数据变更回调 |(node: INode) => void
| onSelect | | 节点选中回调 |React.ForwardedRef
| fileExplorerRef | | 组件实例引用 |'dark' \| 'light'
| theme | | 主题模式 |boolean
| enableSelect | | 是否允许选中节点 |boolean
| showActions | | 是否显示操作按钮 |boolean
| enableSort | | 是否允许排序 |boolean
| allowRepeatText | | 是否允许重复名称 |boolean
| dragOverAutoExpand | | 拖拽到文件夹上是否自动展开 |boolean
| clickRowAutoExpand | | 点击行时是否自动展开 |
`ts`
interface INode {
id: number | string
parent: number | string
text: string
droppable?: boolean
[propName: string]: any
}
- files2tree(files: FileMap, rootId?: number | string): INode[] - 将文件映射转换为树形结构tree2files(tree: INode[], rootId?: number | string): FileMap
- - 将树形结构转换为文件映射getFileIcon8Url(ext: string, options?): string
- - 获取文件图标URL
通过ref可以调用组件的实例方法:
- addFile(parent?: string | number) - 添加文件addFolder(parent?: string | number)
- - 添加文件夹remove(id: string | number, draft?: boolean)
- - 删除节点edit(id: string | number)
- - 编辑节点getFiles(rootId?: number | string)
- - 获取文件映射getData()
- - 获取当前树形数据open(id: string | number)
- - 展开节点close(id: string | number)
- - 折叠节点openAll()
- - 展开所有节点closeAll()
- - 折叠所有节点
`bash安装依赖
npm install
MIT