首页 > 解决方案 > 使用 Save 插件时,React 中的 TinyMCE '错误:未找到表单元素'

问题描述

我试图弄清楚保存插件如何在 TinyMCE for React 中工作。我希望用户能够单击保存按钮并将内容保存到数据库中(此处未包含代码),但是我尝试的任何操作都只是不断收到错误消息Error: No form element found。例如,请考虑这个组件:

const Component = () => {
  const [editorContent, setEditorContent] = useState('');

  const handleEditorInit = () => {
    setEditorContent(someInitialContent);
  }

  const handleEditorChange = (content, editor) => {
    setEditorContent(content);
    console.log(content); // correctly shows formatted content
  }

  const handleOnSubmit = (content, editor) => {
    console.log(content); // correctly shows formatted content
  }

  return (
    <Fragment>
      <Editor
        apiKey="api-key"
        id="my-editor"
        value={editorContent}
        init={{
          menubar: false,
          inline: true,
          plugins: [
            'advlist lists image charmap print preview anchor',
            'searchreplace visualblocks code fullscreen',
            'insertdatetime media table paste code help wordcount save'
          ],
          toolbar:
            'undo redo | bold italic underline backcolor forecolor | \
            removeformat | save'
        }}
        onEditorChange={handleEditorChange}
        onInit={handleEditorInit}
        onSubmit={handleOnSubmit} // doesn't get rid of the error
      />
    </Fragment>
  );
}

渲染上述组件时,内容会显示在编辑器中,并且可以格式化(粗体/下划线等)而不会出现任何问题。和事件处理onInit程序按预期工作(接收格式化的内容),但是当我单击工具栏上的保存按钮时仍然收到错误onEditorChange消息。 我尝试将组件包装在标签中,也尝试使用TinyMCE 提供的事件处理程序,但仍然出现错误。我不明白为什么我总是在有或没有表单元素的情况下收到错误。我到处寻找解决方案,但似乎找不到。特别不是专门针对 React 的。我在这里这里发现了类似的问题onSubmitno form element found
<Editor><form>onSaveContentError: no form element found但我仍然坚持下去,不知道解决方案如何适合 React。
我是在实施错误还是有人知道我的实施哪里出了问题?
任何帮助是极大的赞赏。先感谢您。

标签: javascriptreactjstinymce

解决方案


save插件旨在提交包含底层 TinyMCE 的标准 HTML 表单<textarea>。如果您使用 React,我会怀疑您的表单提交将通过一些特定于 React 的 JavaScript 而不是标准 HTML 表单来处理,因为标准表单提交会使整个页面刷新,这与 React 或其他 SPA 框架的倾向不同操作。


推荐阅读