javascript - 使用 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 的。我在这里和这里发现了类似的问题onSubmit
no form element found
<Editor>
<form>
onSaveContent
Error: no form element found
但我仍然坚持下去,不知道解决方案如何适合 React。
我是在实施错误还是有人知道我的实施哪里出了问题?
任何帮助是极大的赞赏。先感谢您。
解决方案
该save
插件旨在提交包含底层 TinyMCE 的标准 HTML 表单<textarea>
。如果您使用 React,我会怀疑您的表单提交将通过一些特定于 React 的 JavaScript 而不是标准 HTML 表单来处理,因为标准表单提交会使整个页面刷新,这与 React 或其他 SPA 框架的倾向不同操作。