Lexical.js CLEAR_EDITOR_COMMAND 不会调度

kab*_*man 0 reactjs lexicaljs

我编写了简单的插件,这样我就可以将文本从词汇推送到服务器:

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);。它没有任何作用。我需要的只是清除编辑器

kab*_*man 6

事实证明,它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)

现在效果很好