使用功能组件的 ReactQuill 和 MathQuill4Quill

ReactQuill and MathQuill4Quill using Functional Components

提问人:RyanY 提问时间:10/8/2023 更新时间:10/8/2023 访问量:32

问:

我正在使用 ReactQuill,需要轻松地将数学方程式集成到我使用 ReactQuill 编写的文本中。我设置了 mathquill4quill,但文档是针对 React 类组件的,我是用 React 功能组件编写的。

文档说要执行以下操作:

var quill = new Quill('#editor', {
  modules: {
    formula: true,
    toolbar: [['formula']]
  },
  theme: 'snow'
});

var enableMathQuillFormulaAuthoring = mathquill4quill();
  enableMathQuillFormulaAuthoring(reactQuill, {
    operators: [
      ["\\sqrt[n]{x}", "\\nthroot"],
      ["\\frac{x}{y}", "\\frac"],
    ],
  });

但是,对于功能组件,ReactQuill 作为组件调用如下:

        <ReactQuill
          theme="snow"
          id="editor"
          value={text}
          onChange={handleTextChange}
          modules={{
            toolbar: [
              ["bold", "italic", "underline", "strike", "formula", "image"],
            ],
            formula: true,
            imageResize: {
              parchment: Quill.import("parchment"),
              modules: ["Resize", "DisplaySize", "Toolbar"],
            },
          }}
        />

我尝试用以下代码替换 quill 的声明:

  const reactQuill = useRef<ReactQuill | null>(null);
  enableMathQuillFormulaAuthoring(reactQuill.current?.getEditor(), {
    operators: [
      ["\\sqrt[n]{x}", "\\nthroot"],
      ["\\frac{x}{y}", "\\frac"],
    ],
  });

然后将 ref 添加到 ReactQuill 组件中,如下所示:

<ReactQuill
          theme="snow"
          id="editor"
          value={text}
          onChange={handleTextChange}
          modules={{
            toolbar: [
              ["bold", "italic", "underline", "strike", "formula", "image"],
            ],
            formula: true,
            imageResize: {
              parchment: Quill.import("parchment"),
              modules: ["Resize", "DisplaySize", "Toolbar"],
            },
          }}
        />

但是该方法不起作用。我假设这与我如何使用 useRef 钩子有关,但我不确定,我找不到太多文档来提供帮助。enableMathQuillFormulaAuthoring

我怎样才能使用我的功能性 ReactQuill 组件?enableMathQuillFormulaAuthoring

reactjs react-functional-component react-quill

评论


答: 暂无答案