React-Quill中图片粘贴的兼容问题

上一篇文章里说道quill在谷歌浏览器中只有部分功能可用,由于是一个国外私人写的模块,现在没有再优化了。我自己尝试改了一下,先说一下我自己的优化,也希望前端大佬给出优化建议。

看一下quill-image-drop-module的源码,内容不多,只有五个函数,一个构造函数,两个粘贴删除监听函数,以及两个功能函数。

源码地址:https://github.com/kensnyder/quill-image-drop-module

我只修改了handlePaste这个粘贴函数,下面是修改后的代码。

handlePaste(evt) {
    if (evt.clipboardData && evt.clipboardData.items && evt.clipboardData.items.length) {
        this.readFiles(evt.clipboardData.items, dataUrl => {
            const userAgent = navigator.userAgent; // 取得浏览器的userAgent字符串
            if (userAgent.indexOf('
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用react-quill上传图片的步骤: 1. 首先,你需要安装react-quill和相关的依赖包。你可以使用以下命令来安装: ```shell npm install react-quill axios ``` 2. 在你的React组件引入react-quill和axios: ```javascript import ReactQuill from 'react-quill'; import 'react-quill/dist/quill.snow.css'; import axios from 'axios'; ``` 3. 在你的组件创建一个状态来存储编辑器的内容和上传的图片URL: ```javascript const [editorHtml, setEditorHtml] = useState(''); const [imageUrl, setImageUrl] = useState(''); ``` 4. 创建一个函数来处理图片上传: ```javascript const handleImageUpload = async (file) => { const formData = new FormData(); formData.append('image', file); try { const response = await axios.post('YOUR_UPLOAD_URL', formData); const imageUrl = response.data.imageUrl; setImageUrl(imageUrl); } catch (error) { console.error('Error uploading image', error); } }; ``` 请将`YOUR_UPLOAD_URL`替换为你的图片上传接口的URL。 5. 在你的组件渲染react-quill编辑器,并配置相关的属性和事件处理函数: ```javascript <ReactQuill value={editorHtml} onChange={setEditorHtml} modules={{ toolbar: { container: [ [{ header: [1, 2, false] }], ['bold', 'italic', 'underline', 'strike', 'blockquote'], [{ list: 'ordered' }, { list: 'bullet' }], ['link', 'image'], ['clean'], ], handlers: { image: () => { const input = document.createElement('input'); input.setAttribute('type', 'file'); input.setAttribute('accept', 'image/*'); input.click(); input.onchange = async () => { const file = input.files[0]; const range = quillRef.current.getEditor().getSelection(true); quillRef.current.getEditor().insertEmbed(range.index, 'image', 'data:image', 'user'); quillRef.current.getEditor().setSelection(range.index + 1); handleImageUpload(file); }; }, }, }, }} /> ``` 请将`YOUR_UPLOAD_URL`替换为你的图片上传接口的URL。 6. 最后,你可以在编辑器插入图片并将其上传到服务器。上传成功后,你可以将图片的URL设置为`imageUrl`状态,并在编辑器显示图片: ```javascript <ReactQuill value={editorHtml} onChange={setEditorHtml} modules={...} formats={...} style={{ height: '300px' }} /> {imageUrl && <img src={imageUrl} alt="Uploaded" />} ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值