富文本编辑器braft-editor在React + ant design中的使用

前言

        braft-editor的使用文档说明:BraftEditor · 语雀

        笔者本次实现的最终效果图:

具体实现

一、默认编辑器

  • 安装:

        方法一:npm:npm install braft-editor --save 

        方法二:yarn:yarn add braft-editor

  • 导入braft-editor相关:
import BraftEditor from "braft-editor";
import "braft-editor/dist/index.css";
import { ContentUtils } from "braft-utils";
  • 为BraftEditor创建初始值:
  const [editorState, setEditorState] = useState(
    BraftEditor.createEditorState(null)
  );
  • 使用BraftEditor:
const handleChange = (editorState) => {
    setEditorState(editorState);
};

<BraftEditor
    contentStyle={{ height: "400px" }}
    style={{ border: "1px solid #cecece" }}
    value={editorState}
    onChange={handleChange}
/>

        至此,我们已经可以使用默认的braft-editor编辑器了。如果想要取出富文本部分,使用editorState.toHTML()即可。

二、个性化设置

        在上述代码中,笔者没有设置braft-editor的任何配置项,但braft-editor在属性 · 语雀中提供了很多配置,例如:

         显然笔者用不到这么多,只需要其中的一部分:

controls={[
    "undo","redo","separator","font-size","line-height",
    "letter-spacing","separator","text-color","bold","italic",
    "underline","separator","superscript","subscript","remove-styles",
    "separator","text-indent","text-align","separator","headings",
    "list-ul","list-ol","separator","link","separator"
]}

          默认可选字号:

        但是笔者也不需要这么多,设置fontSize:fontSizes={[12, 14, 16, 18, 20]}

        其他的配置也是同样:

controls={[
    "undo","redo","separator","font-size","line-height",
    "letter-spacing","separator","text-color","bold","italic",
    "underline","separator","superscript","subscript","remove-styles",
    "separator","text-indent","text-align","separator","headings",
    "list-ul","list-ol","separator","link","separator"
]}
fontSizes={[12, 14, 16, 18, 20]}
lineHeights={[1, 1.2, 1.5]}
letterSpacings={[1, 2, 3]}

        至此,已经对功能、字号、行号、字符间距进行了设置。

        但是笔者希望可以上传图片到富文本区域,因此还需要进一步设置。

三、上传图片

        方法一:使用media。在controls中加入media,达到上传图片的目的,此时通过editorState.toHTML()会拿到图片的base64格式。

        方法二:使用extendControls在工具栏中增加一个完全自定义的React组件。

  const extendControlsContent = [
    {
      key: "antd-uploader",
      type: "component",
      component: (
        <Upload
          accept="*"
          showUploadList={false}
          action="https://xxx"
          onChange={(info) => {
           
          }}
        >
          <button
            type="button"
            className="control-item button upload-button"
            data-title="插入图片"
          >
            上传图片
          </button>
        </Upload>
      ),
    },
  ];

//...

 extendControls={extendControlsContent}

//...

        在onChange中处理拿到的图片链接,因为笔者这里写在form表单中,所以写成:

          onChange={(info) => {
            if (info?.file?.response?.code === "1") {
              form.setFieldsValue({
                ...form.getFieldsValue(),
                Content: ContentUtils.insertMedias(
                  form.getFieldsValue().Content,
                  [
                    {
                      type: "IMAGE",
                      url: "http://xxx/" + info?.file?.response?.url,
                    },
                  ]
                ),
              });
            }
          }}

        此时,在编辑器中上传图片,通过editorState.toHTML()会拿到图片在服务器上的url。

四、文字链接自动补全https

        为编辑器中的文字加超链接,填入链接地址时,例如百度:https://www.baidu.com/,很多人可能只写www.baidu.com,这样无法链接过去,所以需要补全https。

        braft-editor提供了许多hooks,这里笔者需要使用toggle-link(在设置文字链接前执行的钩子函数)。

  const hooks = {
    "toggle-link": ({ href, target }) => {
      href = href.indexOf("http") === 0 ? href : `https://${href}`;
      return { href, target };
    },
  };

//...

hooks={hooks}

//...

总结

        本文主要介绍braft-editor在React结合ant design中的使用,包括文字、图片、超链接等处理,如有建议,欢迎指教~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为前端使用React、TypeScript、React Router、Redux、Axios、Ant Design和Sass开发ERP软件项目的职责描述,主要包括以下几个方面: 1. 分析需求和设计界面:与产品经理、设计师等团队成员合作,分析用户需求和产品设计,设计符合用户需求的界面,并提供良好的用户体验。 2. 使用React和TypeScript开发组件:根据设计稿或需求文档,使用React和TypeScript开发可复用的组件,利用类型检查提高代码的可靠性和可维护性。 3. 使用React Router实现路由管理:使用React Router进行页面之间的导航和路由管理,确保页面之间的跳转和参数传递的正常。 4. 使用Redux进行状态管理:使用Redux进行全局状态的管理,包括定义和处理数据流、异步操作、状态持久化等,确保数据的一致性和可控性。 5. 使用Axios进行网络请求:使用Axios库发送HTTP请求与后端API进行数据交互,并处理请求的错误和异常情况。 6. 使用Ant Design进行UI开发:使用Ant Design提供的组件库进行界面开发,保证界面的一致性和美观性,并根据需求进行自定义样式。 7. 使用Sass进行样式管理:使用Sass预处理器编写可复用的样式代码,提高样式开发效率,并保持样式的可维护性。 8. 优化性能和用户体验:通过前端优化技术(如代码分割、懒加载、缓存等),提升ERP软件的性能和用户体验,确保页面加载速度快、操作流畅。 9. 跨浏览器兼容性测试:测试并确保ERP软件在各种主流浏览器(如Chrome、Firefox、Safari等)下的正常运行,并解决兼容性问题。 10. 代码版本管理和团队协作:使用版本管理工具(如Git)管理代码,与团队成员协作开发,参与代码评审和项目迭代。 11. 系统维护和故障排除:及时响应用户反馈并解决软件出现的前端问题,修复bug,确保ERP软件的稳定运行。 总的来说,前端使用React、TypeScript、React Router、Redux、Axios、Ant Design和Sass开发ERP软件项目的职责是负责开发和维护ERP软件的前端界面和功能,与后端进行数据交互,优化性能和用户体验,并与团队成员协作推动项目的成功交付。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值