React中:富文本编辑器(react-quill),自定义上传图片到七牛云
1.组件封装
import React, { useState, useEffect, useRef } from 'react'; import ReactQuill from 'react-quill'; import { message } from 'antd'; import 'react-quill/dist/quill.snow.css'; import { getTokenApi } from '@/services/user/login'; import { randomWord } from '@/utils/index'; import { request } from 'umi';const Editor: React.FC<any> = (props) => {const { value, width, height, handleParams } = props;let refs: any = useRef(null);const [valueText, setValue] = useState('');const [widthText, setWidth] = useState('1010px');const [heightText, setHeight] = useState('300px');const modules: any = {toolbar: {container: [['bold', 'italic', 'underline', 'strike'], // toggled buttons['blockquote', 'code-block'],['link', 'image'],[{ header: 1 }, { header: 2 }], // custom button values[{ list: 'ordered' }, { list: 'bullet' }],[{ script: 'sub' }, { script: 'super' }], // superscript/subscript[{ indent: '-1' }, { indent: '+1' }], // outdent/indent[{ direction: 'rtl' }], // text direction// [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown[{ header: [1, 2, 3, 4, 5, 6, false] }],[{ color: [] }, { background: [] }], // dropdown with defaults from theme[{ font: [] }],[{ align: [] }],['clean'], // remove formatting button],handlers: {image() {imageHandler.call(this, props);},},},};// 自定义上传图片到七牛云const imageHandler = async (action) => {const input: any = document.createElement('input');input.setAttribute('type', 'file');input.setAttribute('accept', 'image/*');input.click();const {data: { uploadToken },} = await getTokenApi({});//获取tokeninput.onchange = () => {const file = input.files[0];const formData = new FormData();formData.append('token', uploadToken);formData.append('key', randomWord(false, 40, 50));formData.append('file', file);const hide = message.loading('上传中...', 0);request('https://xxxxxxx', {// 七牛云上传图片域名地址method: 'POST',data: formData,headers: { 'Content-Type': 'application/json' },}).then((res) => {const url = 'https://wwwwwwww/' + res.key; // 获取url,图片预览地址let quill = refs?.current?.getEditor(); //获取到编辑器本身const cursorPosition = quill.getSelection().index; //获取当前光标位置quill.insertEmbed(cursorPosition, 'image', url); //插入图片quill.setSelection(cursorPosition + 1); //光标位置加1hide();});};};const handleHtml = (e) => {setValue(e);handleParams(e);};useEffect(() => {setWidth(width ? width : '1010px');setHeight(height ? height : '300px');}, []);useEffect(() => {setValue(value ? value : '');}, [value]);return (<div><ReactQuillref={refs}className="ql-editor" //组件要加上(className=“ql-editor”)样式类名,否则空格不回显modules={modules}value={valueText}onChange={handleHtml}style={{width: widthText,height: heightText,overflow: 'hidden',borderBottom: '1px solid #ccc',}}/></div>); };export default Editor;
二、使用
import React, { useEffect, useState, useRef } from 'react'; import { Button, Modal, message, Space, Row, Col } from 'antd'; import { PageContainer } from '@ant-design/pro-layout'; import ReactQuill from '@/components/Global/ReactQuill'; import './index.less';const Index: React.FC = () => {const [htmlValue, setHtmlValue] = useState('');const handleParams = (e) => {setHtmlValue(e);};useEffect(() => {getRechargeGearList();}, []);return (<PageContainer><ReactQuillvalue={htmlValue}width={'900px'}height={'300px'}handleParams={handleParams}></ReactQuill></PageContainer>); }; export default Index;
React中:富文本编辑器(react-quill),自定义上传图片到七牛云相关推荐
- 富文本编辑器 CKeditor 配置使用+上传图片
参考文献: 富文本编辑器 CKeditor 配置使用 CKEditor与CKFinder的配置(ASP.NET环境),老版本可以参考 CKEditor+CKFinder ASP版在本地电脑中的配置 ...
- 记录React之富文本编辑器
主要知识点:contentEditable 以及 document.execCommand 日常使用的输入框,大多直接使用input,支持正常的文本操作,但是想要做复杂的内容输入,就需要一个富文本编辑 ...
- react html编辑器,wangEditor富文本编辑器+react+antd的使用
搜索热词 1.github上发现富文本编辑器: 2.结合react+antd的具体使用: 案例使用场景:MyModal为弹窗,弹窗显示 编辑名称及描述.描述使用wangeditor富文本编辑器实现. ...
- 【重点突破】—— React实现富文本编辑器
前言:富文本编辑器Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器. 一.安装插件 react-draft-wysiwyg: 文本编辑器插件 dra ...
- 使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码
富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百 ...
- 【uEditor】引入富文本编辑器uEditor时,上传图片失败的原因
uEditor uEditor是百度开发的一款开源的富文本编辑器.官网地址:http://ueditor.baidu.com/website/ 使用教程请看官网文档 前言 如何引入我就不赘述了,官网有 ...
- 基于React的富文本编辑器——Braft Editor使用
antd 是基于 Ant Design 设计规范实现的 高质量 React 组件库,倾向于只提供符合该规范且带有视觉展现的 UI 组件,也尽量不重复造轮子. 如果要在React项目中使用富文本编辑器, ...
- 百度富文本编辑器UEditor如何自定义配置toolbars工具条
UE.getEditor('editor', {toolbars: [[//工具条'fullscreen', 'source', 'undo', 'redo', 'bold', 'italic','u ...
- 2021 年 React 的 5 大富文本编辑器
5大富文本编辑器 今天,富文本编辑器被用于许多应用中,包括简单的博客和复杂的内容管理系统.然而,选择一个并不容易,因为有很多具有不同功能的编辑器. 因此,在这篇文章中,我将评估5个React的富文本编 ...
最新文章
- 物联网和前端技术,两者相辅相成并且互相促进 —— 阿里云 MVP 黄强专访
- 深度解析Objective-C笔试题
- 大数据如何改变安全视角
- 安装服务器系统大概多久,安装服务器系统
- Myslq 之创建数据表
- tcpdf中文解决方案
- webstorm(10.0.2)设置测试服务器 -- 局域网内其他设备访问
- java调用win32_java调用win32api操作windows窗口
- arduino nano 蓝牙_初学者适用!基于Arduino开发板控制SG90伺服电机方案
- 环境影响评价期末考试题库
- 国内第一款企业集中管理平台--极通EWEBS3.0
- 谷歌地图、百度地图、搜搜地图之浅比较
- php公众号关注自动回复内容,微信公众号自动回复内容大全集锦
- linux里面rpm是什么文件,linux中deb格式和rpm格式分别是什么?
- 如何在word中同一位置处插入多篇连续文献
- UDS04-清除诊断信息服务【ServiceID = 0x14】
- 凤凰金融张震:互联网金融将进入3.0时代
- 人体检测算法,人流量统计,闯入分析
- 【QT学习】Day 1 快捷键、按钮、对象树、信号和槽、Lambda表达式
- appium底层实现原理解析
热门文章
- 【Proxy ARP】代理ARP
- 智慧园林:智能节水灌溉监控系统解决方案
- 【前端】wepy/mpvue/taro/uni-app,多端开发框架哪家强?
- iOS开发之第三方分享微信分享、朋友圈分享,史上最新最全第三方分享微信方式实现、朋友圈方式实现
- python保存字典到xml文件_使用Python和BeautifulSoup从XML文件创建字典
- ESP8266 读取多个传感器数据(风速、风向、颗粒物、CO)
- Ci2454/CI2451国产2.4GHz无线收发8位MCU玩具遥控SoC芯片
- 7个月吸粉13.7万人!泰禾广场Wi-Fi上的“智慧商业”
- 瑞友-项目经理培训 总结
- 邮件、域名、DNS相关知识