如何在react-quill编辑器中获取已删除的图像url

问题描述 投票:0回答:1

我正在使用

react-quill
,我想知道插入编辑器后如何选择
image
,以及删除后如何获取已删除的图像
url

这是我的编辑器组件

import React,{useState} from 'react'
import ReactQuill from 'react-quill';
import 'react-quill/dist/quill.snow.css';

const modules = {
    toolbar:{
        container: [
            [{ 'header': [1, 2, false] }],
            ['bold', 'italic', 'underline', 'strike', 'blockquote'],
            [{'list': 'ordered'}, {'list': 'bullet'}, {'indent': '-1'}, {'indent': '+1'}],
            ['link', 'image'],
            ['clean']
          ],
          

          handlers:{
            'image': async function(){
                const editor = this.quill
                
                const input = document.createElement('input');
                input.setAttribute('type', 'file');
                input.setAttribute('accept', 'image/*');
                input.click();

                input.addEventListener('change', (e) => {
                    const url = awiat uploadFile(e.target.files[0))
                    const range = editor.getSelection(true);
                    editor.insertEmbed(range.index, 'image', url; 
                    editor.setSelection(range.index + 1)
                    
                })
            }
        }
    }
    
    
  }

  const formats = [
    'header', 'font', 'size',
    'bold', 'italic', 'underline', 'strike', 'blockquote',
    'list', 'bullet', 'indent',
    'link', 'image', 'color',
  ]

function Editor() {
    const [editorData,setEditorData] = useState(" ")

    const handleChange = (value) => {
        setEditorData(value)
    }
    

     return (
        <div>
            <ReactQuill formats={formats} modules={modules} value={editorData}
                  onChange={(data)=>handleChange(data)} />

        </div>
    )
}

export default Editor

那么,如何在插入后在编辑器中选择图像并获取从编辑器中删除的 url

after

javascript reactjs quill react-quill
1个回答
2
投票

首先,您应该将上传的图像 URL 存储在数组中,例如:

const [addresses, setAddresses] = useState([])
addresses.push(url)

然后当您提交表格时,检查这些地址是否存在于您的

editor content
中保存它们,否则任何一个不存在都将其删除。

addresses.map(async (a) => {
     if (!yourEditorValue.includes(a)) {
         /* here you can add your method according to your backend, I am 
         using strapi */
         const deletePhoto = await axios.delete(
           `${yourServerUrl}/upload/files/${id}`,
            {
              //this one is not necessary if you don't need
              headers: {
                 Authorization: `Bearer ${yourToken}`,
              },
            },
          )
      }
      return true
   })
© www.soinside.com 2019 - 2024. All rights reserved.