使用Ant Design UI库实现类似百度网盘

百度网盘就是文件层级明显

需求:

1、默认展示根目录下的文件及文件夹

2、实现上传功能,支持单个、多个文件的上传,大文件打包上传

3、实现点击目录可进入子目录,点击面包屑切换到对应目录层级

4、实现创建文件夹功能,重命名功能

5、实现文件下载,大文件打包下载

 这个博主牛👍

http://vmartaw.com/2020/04/22/使用Ant-Design-UI库实现类似百度网盘/

 仅供参考代码,react写法

1、新建文件夹、重命名

        

constructor(props) {
    super(props)
    this.state = {
      folder_name: '新建文件夹',
      editingKey: '', // 是否是重命名操作
    }
}


Button onClick={this.addFolder}><Icon type='folder-add' />新建文件夹</Button>


// 新建文件夹
addFolder = () => {
    // 参考图片2
}

columns = [ 参考图片1 ]


.......


import * as projectArchiveService from '../services/index.js';
namespace: 'projectArchiveModal',
state: {
    loading: false,
    backIdValue: '', // 父级标识,第一层级没有父级,标识为空,
    contentTableList: [], // 列表数据
    cataLogList: [], // 面包屑    
},

reducer: {
    setState (state, { payload }) {
        return { ...state, ...payload}
    },
},

thunk: {
    // 获取列表数据
    search ({ payload }, { put } ){
        put({
            type: 'projectArchiveModal/setState',
            payload: {
                loading: true,
            },
        });
        projectArchiveService.projecTableData(payload).then((res) => {
            if(res.code === 200){
                put({
                    type: 'projectArchiveModal/setState',
                    payload: {
                        loading: false,
                        backIdValue: res.data.backId,
                        contentTableList: res.data.content, // 列表数据
                        cataLogList: res.data.cataLog,
                    },
                })
            } else {
                message.error(res.data.message)
                put({
                    type: 'projectArchiveModal/setState',
                    payload: {
                        loading: true,
                    },
                });
            }
        }).catch((err) => {
            throw new Error(err)
        });
    }
},




......

// 获取列表数据
export function projecTableData (payload) {
    return request({
       url: '',
       method: 'post',
       data: {
            ...payload,
       },
    }};
}

// 新建文件夹,点击对勾调接口
export function savaAddNewFolder (payload) {
    return request({
       url: '',
       method: 'post',
       data: {
            ...payload,
       },
    }};
}

// 重命名
export function renameFile (payload) {
    return request({
       url: '',
       method: 'post',
       data: {
            ...payload,
       },
    }};
}

图片1:

图片3:由图片1中的代码产生的触发方法

图片2:

为了避免点击多次”新建文件夹”,新建页面显示许多,自定义一个id

react中一种传递调接口的方法

 拓展:

使用异步加载属性文件夹管理

使用Ant Design UI库实现异步加载树形结构文件夹管理 | WUWEI'S BLOG

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要使用 Ant Design Vue 组件中的 Input 和 Button 组件。我们可以在页面上放置一个输入框和一个搜索按钮,并绑定相应的事件处理函数。 接着,我们需要调用百度搜索 API 进行搜索。可以使用 axios 来发送 HTTP 请求,获取搜索结果。具体实现如下: ```vue <template> <div> <a-input v-model="searchText" style="width: 200px; margin-right: 10px;" placeholder="请输入关键词"></a-input> <a-button type="primary" @click="search">搜索</a-button> <ul v-if="searchResult"> <li v-for="item in searchResult"> <a :href="item.link" target="_blank">{{ item.title }}</a> </li> </ul> </div> </template> <script> import axios from 'axios'; export default { data() { return { searchText: '', searchResult: null }; }, methods: { search() { if (!this.searchText) { return; } axios.get('https://www.baidu.com/s', { params: { wd: this.searchText } }).then((response) => { const parser = new DOMParser(); const htmlDoc = parser.parseFromString(response.data, 'text/html'); const results = htmlDoc.querySelectorAll('.result'); const searchResult = []; for (let i = 0; i < results.length; i++) { const titleEle = results[i].querySelector('.t a'); const link = titleEle.href; const title = titleEle.innerText.trim(); searchResult.push({ link, title }); } this.searchResult = searchResult; }); } } }; </script> ``` 在上述代码中,我们使用了 axios 发送 GET 请求,将搜索关键词作为参数传递给百度搜索 API。然后,我们解析返回的 HTML 页面,提取出搜索结果中的标题和链接,并展示在页面上。 需要注意的是,百度搜索 API 的使用需要遵守其相关规定,避免滥用和侵犯他人权益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值