当前位置: 首页 > news >正文

React使用富文本CKEditor 5,上传图片并可设置大小

上传图片

基础使用(标题、粗体、斜体、超链接、缩进段落、有序无序、上传图片)
官网查看:https://ckeditor.com/docs/ckeditor5/latest/installation/integrations/react.html

安装依赖

npm install --save @ckeditor/ckeditor5-react @ckeditor/ckeditor5-build-classic

使用

import { CKEditor } from '@ckeditor/ckeditor5-react';
import ClassicEditor from '@ckeditor/ckeditor5-build-classic';<CKEditoreditor={ ClassicEditor }data="<p>Hello from CKEditor&nbsp;5!</p>"onReady={ editor => {// You can store the "editor" and use when it is needed.console.log( 'Editor is ready to use!', editor );} }onChange={ ( event, editor ) => {const data = editor.getData();console.log( { event, editor, data } );} }onBlur={ ( event, editor ) => {console.log( 'Blur.', editor );} }onFocus={ ( event, editor ) => {console.log( 'Focus.', editor );} }extraPlugins={[(editor) => {editor.plugins.get( 'FileRepository' ).createUploadAdapter = ( loader ) => {return new MyUploadAdapter( loader );
};/>

上传图片 并可设置大小

方法:使用online builder
在这里插入图片描述

选中需要的插件,一直next step ,然后下载
在这里插入图片描述

把图片相关的插件选中,add
在这里插入图片描述
默认选择,next step
在这里插入图片描述

解压后

npm i #安装依赖npm run build #打包

把打包后文件build/cheditor.js放进react项目的src/components/Editor/ckeditor.js

react项目中使用

在这里插入图片描述

import { PageContainer } from '@ant-design/pro-components';
import { Access, useAccess } from '@umijs/max';
import { Button } from 'antd';
import { CKEditor } from '@ckeditor/ckeditor5-react'
import ClassicEditor from '@/components/Editor/ckeditor';
const AccessPage: React.FC = () => {const access = useAccess();return (<PageContainerghostheader={{title: '权限示例',}}><Access accessible={access.canSeeAdmin}><Button>只有 Admin 可以看到这个按钮</Button></Access><div style={{ marginTop: 40}}><CKEditoreditor={ClassicEditor}config={{toolbar: {items: ['heading','|','bold','italic','link', //链接'bulletedList', //无序排序'numberedList', //有序排序'outdent','indent','|','imageUpload','blockQuote','insertTable','mediaEmbed','undo','redo']},image: { toolbar: ['imageStyle:block','imageStyle:side','|','toggleImageCaption','imageTextAlternative','|','linkImage']}}}extraPlugins={[(editor) => {editor.plugins.get( 'FileRepository' ).createUploadAdapter = ( loader ) => {return new MyUploadAdapter( loader );
};}]}/></div></PageContainer>);
};export default AccessPage;

图片上传adapter

上传图片逻辑

MyUploadAdapter.js

class MyUploadAdapter {constructor( loader ) {// The file loader instance to use during the upload.this.loader = loader;}// Starts the upload process.upload() {// Return a promise that will be resolved when the file is uploaded.return loader.file.then( file => {//上传图片逻辑,必须是异步的,否则在富文本框无法正常渲染图片return {default: ''//图片链接}} );}// Aborts the upload process.abort() {}
}
{default: 'http://example.com/images/image–default-size.png'
}

图片上传upload adapter:https://ckeditor.com/docs/ckeditor5/latest/framework/deep-dive/upload-adapter.html

详细查看官网更多内容:https://ckeditor.com/ckeditor-5/

http://www.lryc.cn/news/215494.html

相关文章:

  • 【工具使用】批量修改文件夹的时间操作
  • Android Snackbar
  • 详解API接口如何安全的传输数据(内附商品详情API接口接入方式)
  • 网工内推 | 大专以上,福利待遇好,IE认证优先(云厂商)
  • Python time strptime()和strftime()
  • 是谁家班主任还不知道 怎么发布期中成绩啊。
  • 损失函数(Loss Function)一文详解-聚类问题常见损失函数Python代码实现+计算原理解析
  • 测试用例设计方法 —— 场景法详解
  • el-table表格设置——动态修改表头
  • 京东数据分析:2023年9月京东洗地机行业品牌销售排行榜
  • 使用 TensorFlow SSD 网络进行对象检测
  • (2)STM32单片机上位机
  • 从InnoDB索引的数据结构,去理解索引
  • Nacos:动态服务发现与配置管理的终极解决方案
  • 易思无人值守智能物流系统Sys_ReportFile文件上传漏洞复现
  • java Map List转化,通过Map保存数据,通过List排序。取前三名
  • LEECODE 1480一维数组的动态和
  • python文档链接
  • HTTP调试代理工具/Proxyman
  • 搭建Qt5.7.1+kylinV10开发环境、运行环境
  • Ceph:关于Ceph 中创建和管理自定义 CRUSH Map
  • 【Linux】开发工具——vim多模式编辑器的入土设置sudoers白名单
  • Linux基础环境开发工具的使用(yum,vim,gcc,g++)
  • 加速软件开发和交付的革命性方法-DevOps
  • Ha-NeRF源码解读 train_mask_grid_sample
  • 大数据毕业设计选题推荐-系统运行情况监控系统-Hadoop-Spark-Hive
  • SpringBoot----自定义Start(自定义依赖)
  • 通过条件竞争实现内核提权
  • vue实现换肤功能
  • 嵌入式软件工程师面试题——2025校招社招通用(八)