时间:2021-05-26
导入依赖包
import Vditor from "vditor";导入样式
import "vditor/src/assets/scss/index.scss";使用示例
export default class Vditor extends Component { constructor(props) { super(props); this.state = { editValue: "" }; } componentDidMount = () => { //组件挂载完成之后调用 注意一定要在组件挂载完成之后调用 否则会找不到注入的DOM this.createVidtor({ value: this.state.editValue }); } //创建编辑器 下面会详解 createVidtor = params => { let { value } = params; value = value ? value : " "; let that = this; const vditor = new Vditor("vditor", { height: 800, mode: "ir", //及时渲染模式 placeholder: "React Vditor", toolbar: [ "emoji", "headings", "bold", "italic", "strike", "link", "|", "list", "ordered-list", "check", "outdent", "indent", "|", "quote", "line", "code", "inline-code", "insert-before", "insert-after", "|", "upload", "table", "|", "undo", "redo", "|", "fullscreen", "edit-mode", { name: "more", toolbar: [ "both", "code-theme", "content-theme", "export", "outline", "preview", "devtools", "info", "help" ] }, "|", { hotkey: "⌘-S", name: "save", tipPosition: "s", tip: "保存", className: "right", icon: `<img style="height: 16px" src='https://img.58cdn.com.cn/escstatic/docs/imgUpload/idocs/save.svg'/>`, click() { that.saveDoc(); } }, { hotkey: "", name: "publish", tipPosition: "s", tip: "发布文章", className: "right", icon: `<img style="height: 16px" src='https://img.58cdn.com.cn/escstatic/docs/imgUpload/idocs/publish.svg'/>`, click() { that.publishDoc(); } } ], after() { vditor.setValue(value); }, blur() { that.saveDoc(); }, upload: { accept: "image/*", multiple: false, filename(name) { return name .replace(/[^(a-zA-Z0-9\u4e00-\u9fa5\.)]/g, "") .replace(/[\?\\/:|<>\*\[\]\(\)\$%\{\}@~]/g, "") .replace("/\\s/g", ""); }, handler(files) { function callback(path) { let name = files[0] && files[0].name; let succFileText = ""; if (vditor && vditor.vditor.currentMode === "wysiwyg") { succFileText += `\n <img alt=${name} src="${path}">`; } else { succFileText += ` \n![${name}](${path})`; } document.execCommand("insertHTML", false, succFileText); } that.handleImageUpload(files, callback); }, url(files) { that.handleImageUpload(files); } } }); this.vditor = vditor; return vditor; }; //首先需要在render里面注入DOM,可自定义注入DOM的ID,初始化编辑器的时候使用自定义的ID即可 render() { <div className="editorWrap"> <div id="vditor" /> </div> }}示例:
新建对象
const vditor = new Vditor("vditor", ...option);新建对象时第一个参数ID,要对应上再render里面注入的ID
tip:只列举一下常用参数,其他的参数请参照 官方API
参数 说明 height 配置编辑器高度 mode 编辑器模式
wysiwyg:所见即所得2
ir:及时渲染
sv:分屏模式 placeholder 占位符 toolbar 工具栏
Tip:如果要自定义工具栏的话,一定要加上默认的工具栏,不然只展示自定义的了
tip:此为源码里面copy 不用更改可直接使用,官方已定义好了快捷键和功能
toolbar: [ "emoji", "headings", "bold", "italic", "strike", "link", "|", "list", "ordered-list", "check", "outdent", "indent", "|", "quote", "line", "code", "inline-code", "insert-before", "insert-after", "|", "upload", "record", "table", "|", "undo", "redo", "|", "fullscreen", "edit-mode", { name: "more", toolbar: [ "both", "code-theme", "content-theme", "export", "outline", "preview", "devtools", "info", "help", ], }]对应工具栏展示:
参数 说明 hotkey 热键配置 name 功能区分(唯一性) tip 悬浮提示 className UI展示 right靠右 icon 按钮图标 click 点击事件
示例:
参数 说明 accept 接收文件类型(我这边只做了图片上传) multiple 是否多选 filename 格式化文件名 handler 点击数触发方法 url 配置此方法时可实现图片粘贴并上传
上传完成后接口返回的CDN地址
上传完成后处理
handler(files) { function callback(path) { let name = files[0] && files[0].name; let succFileText = ""; //上传完成获取当前编辑器模式 根据不同模式拼接不同的展示标签 if (vditor && vditor.vditor.currentMode === "wysiwyg") { succFileText += `\n <img alt=${name} src="${path}">`; } else { succFileText += ` \n![${name}](${path})`; } //拼接完直接插入到鼠标选中位置 document.execCommand("insertHTML", false, succFileText); } that.handleImageUpload(files, callback);}以上是本人在接入vditor编辑器是的一些使用总结,更多相关React Vditor内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
自定义指令中使用AngularJS扩展HTML的功能。自定义指令使用的“指令”的功能定义。自定义指令只是替换了它被激活的元素。引导过程中AngularJS应用程
自定义指令中使用AngularJS扩展HTML的功能。自定义指令使用的“指令”的功能定义。自定义指令只是替换了它被激活的元素。引导过程中AngularJS应用程
前言:前面几篇讲了自定义控件绘制原理Android自定义控件基本原理详解(一),Android自定义控件之自定义属性(二),Android自定义控件之自定义组合
JS代码实现自定义热键实现功能:1.自定义上下左右键2.使用自定义热键或者使用键盘上下左右键移动图片效果图:步骤1:HTML代码:使用自定义按键实现图片移动ta
使用antd按需加载使用react-app-rewired对create-react-app的默认配置进行自定义1、yarnaddreact-app-rewir