我编写了简单的插件,这样我就可以将文本从词汇推送到服务器:
const SubmitPlugin = ({ onSubmit }) => {
const [editor] = useLexicalComposerContext();
const onEnter = useCallback(
(event) => {
const { ctrlKey, metaKey } = event;
if (ctrlKey || metaKey) {
event.preventDefault();
onSubmit(
dompyrify.sanitize($generateHtmlFromNodes(editor), {
ALLOWED_ATTR: ['style'],
}),
);
editor.dispatchCommand(CLEAR_EDITOR_COMMAND, undefined);
}
return true;
},
[editor],
);
useEffect(() => {
return mergeRegister(
editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_HIGH),
);
}, [editor, onEnter]);
return null;
};
Run Code Online (Sandbox Code Playgroud)
当我按 Ctrl 或 CMD + Enter 时,它会调用 onSubmit 函数。除了部分之外,一切正常editor.dispatchCommand(CLEAR_EDITOR_COMMAND, undefined);。它没有任何作用。我需要的只是清除编辑器
事实证明,它CLEAR_EDITOR_COMMAND被分成了插件:
import { ClearEditorPlugin } from '@lexical/react/LexicalClearEditorPlugin';
Run Code Online (Sandbox Code Playgroud)
和
return (
<LexicalComposer initialConfig={initialConfig}>
<RichTextPlugin
contentEditable={<ContentEditable />}
placeholder={<div className="placeholder">Reply...</div>}
/>
<ClearEditorPlugin />
<SubmitPlugin onSubmit={onSubmit} />
</LexicalComposer>
);
Run Code Online (Sandbox Code Playgroud)
现在效果很好
| 归档时间: |
|
| 查看次数: |
2194 次 |
| 最近记录: |