基于Antd Table自定义通用columns列筛选配置

最近因为工作需要,用到了富文本编辑器让用户填写反馈,上传图片等功能,经过一些对比选择了tinymce,记录下图片相关问题。

完整版封装的组件代码,放到最后。

环境

  • vue2.x
  • tinymce 5.10.3
  • tinymce-vue 2.1.0

这里由于开发环境是vue2,所以目前这个时间点,需要选择版本的去安装,引用官方文档的一句话

Version 4 of the tinymce-vue package supports Vue.js 3.x, but does not support Vue.js 2.x. For Vue.js 2.x applications, use tinymce-vue version 3.

图片上传

这个比较简单,在_init的配置中,配置images_upload_handler_

...
data () {init: {images_upload_handler:this.handleImageUpload}
},
methods: {handleImageUpload (blobInfo, success, failure) {// 将图片上传到服务器.let formdata = new FormData()formdata.append('file', blobInfo.blob(), blobInfo.filename())this.uploadImage(formdata).then(success).catch(failure)},uploadImage (formdata) {return new Promise((resolve, reject) => {Axios({url: 'https://xxxx.xx.com/xxx/xxx',method: 'post',data: formdata,headers: {'Content-Type': 'multipart/form-data'}}).then(result => {console.log(result)if (result.status !== 200 || result.data.code !== '200') {const msg = '上传失败'reject(msg)} else {resolve(result.data.data)}})})}
} 
图片粘贴

刚开始是想到的直接监听doc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想要在 antd table自定义筛选,可以通过在 `columns` 中设置 `filterDropdown` 和 `onFilter` 属性来实现。具体步骤如下: 1. 在 `columns` 中设置 `filterDropdown` 属性,该属性值为一个自定义筛选框组件。例如: ```javascript const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, }) => ( <div style={{ padding: 8 }}> <Input placeholder="Search name" value={selectedKeys[0]} onChange={e => setSelectedKeys(e.target.value ? [e.target.value] : [])} onPressEnter={confirm} style={{ width: 188, marginBottom: 8, display: 'block' }} /> <Button type="primary" onClick={confirm} icon={<SearchOutlined />} size="small" style={{ width: 90, marginRight: 8 }} > Search </Button> <Button onClick={clearFilters} size="small" style={{ width: 90 }}> Reset </Button> </div> ), onFilter: (value, record) => record.name.toLowerCase().includes(value.toLowerCase()), sorter: (a, b) => a.name.length - b.name.length, sortDirections: ['descend', 'ascend'], }, // 其他 ]; ``` 上述代码中,我们自定义了一个筛选框组件,其中包含了一个 `Input` 和两个 `Button`,分别用于输入关键字、搜索和清空筛选条件。`setSelectedKeys` 和 `selectedKeys` 用于维护当前的筛选条件,`confirm` 和 `clearFilters` 分别用于确认筛选和清空筛选条件。 2. 在 `columns` 中设置 `onFilter` 属性,该属性值为一个函数,用于根据当前的筛选条件过滤数据。例如: ```javascript const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, }) => ( // 自定义筛选框组件 ), onFilter: (value, record) => record.name.toLowerCase().includes(value.toLowerCase()), // 其他属性 }, // 其他 ]; ``` 上述代码中,我们定义了一个 `onFilter` 函数,该函数根据当前的筛选条件(即 `value`)和当前行的数据(即 `record`)来判断当前行是否应该被筛选出来。 3. 在 `Table` 组件中设置 `filterDropdownVisible` 和 `onFilterDropdownVisibleChange` 属性,用于控制筛选框的显示和隐藏。例如: ```javascript const App = () => { const [data, setData] = useState([]); const handleTableChange = (pagination, filters, sorter) => { console.log('params', pagination, filters, sorter); }; const handleFetchData = () => { // 发起数据请求 }; return ( <Table columns={columns} dataSource={data} onChange={handleTableChange} filterDropdownVisible={true} onFilterDropdownVisibleChange={(visible) => { if (visible) { handleFetchData(); } }} /> ); }; ``` 上述代码中,我们设置了 `filterDropdownVisible` 属性为 `true`,表示默认显示筛选框。同时,当筛选框的显示状态发生变化时,我们会触发 `onFilterDropdownVisibleChange` 回调函数,该函数中我们可以通过发起数据请求来获取最新的筛选条件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值