Package Exports
- @lexical/react/LexicalAutoEmbedPlugin
- @lexical/react/LexicalAutoEmbedPlugin.js
- @lexical/react/LexicalAutoFocusPlugin
- @lexical/react/LexicalAutoFocusPlugin.js
- @lexical/react/LexicalAutoLinkPlugin
- @lexical/react/LexicalAutoLinkPlugin.js
- @lexical/react/LexicalBlockWithAlignableContents
- @lexical/react/LexicalBlockWithAlignableContents.js
- @lexical/react/LexicalCharacterLimitPlugin
- @lexical/react/LexicalCharacterLimitPlugin.js
- @lexical/react/LexicalCheckListPlugin
- @lexical/react/LexicalCheckListPlugin.js
- @lexical/react/LexicalClearEditorPlugin
- @lexical/react/LexicalClearEditorPlugin.js
- @lexical/react/LexicalClickableLinkPlugin
- @lexical/react/LexicalClickableLinkPlugin.js
- @lexical/react/LexicalCollaborationContext
- @lexical/react/LexicalCollaborationContext.js
- @lexical/react/LexicalCollaborationPlugin
- @lexical/react/LexicalCollaborationPlugin.js
- @lexical/react/LexicalComposer
- @lexical/react/LexicalComposer.js
- @lexical/react/LexicalComposerContext
- @lexical/react/LexicalComposerContext.js
- @lexical/react/LexicalContentEditable
- @lexical/react/LexicalContentEditable.js
- @lexical/react/LexicalContextMenuPlugin
- @lexical/react/LexicalContextMenuPlugin.js
- @lexical/react/LexicalDecoratorBlockNode
- @lexical/react/LexicalDecoratorBlockNode.js
- @lexical/react/LexicalDraggableBlockPlugin
- @lexical/react/LexicalDraggableBlockPlugin.js
- @lexical/react/LexicalEditorRefPlugin
- @lexical/react/LexicalEditorRefPlugin.js
- @lexical/react/LexicalErrorBoundary
- @lexical/react/LexicalErrorBoundary.js
- @lexical/react/LexicalHashtagPlugin
- @lexical/react/LexicalHashtagPlugin.js
- @lexical/react/LexicalHistoryPlugin
- @lexical/react/LexicalHistoryPlugin.js
- @lexical/react/LexicalHorizontalRuleNode
- @lexical/react/LexicalHorizontalRuleNode.js
- @lexical/react/LexicalHorizontalRulePlugin
- @lexical/react/LexicalHorizontalRulePlugin.js
- @lexical/react/LexicalLinkPlugin
- @lexical/react/LexicalLinkPlugin.js
- @lexical/react/LexicalListPlugin
- @lexical/react/LexicalListPlugin.js
- @lexical/react/LexicalMarkdownShortcutPlugin
- @lexical/react/LexicalMarkdownShortcutPlugin.js
- @lexical/react/LexicalNestedComposer
- @lexical/react/LexicalNestedComposer.js
- @lexical/react/LexicalNodeEventPlugin
- @lexical/react/LexicalNodeEventPlugin.js
- @lexical/react/LexicalNodeMenuPlugin
- @lexical/react/LexicalNodeMenuPlugin.js
- @lexical/react/LexicalOnChangePlugin
- @lexical/react/LexicalOnChangePlugin.js
- @lexical/react/LexicalPlainTextPlugin
- @lexical/react/LexicalPlainTextPlugin.js
- @lexical/react/LexicalRichTextPlugin
- @lexical/react/LexicalRichTextPlugin.js
- @lexical/react/LexicalTabIndentationPlugin
- @lexical/react/LexicalTabIndentationPlugin.js
- @lexical/react/LexicalTableOfContents
- @lexical/react/LexicalTableOfContents.js
- @lexical/react/LexicalTableOfContentsPlugin
- @lexical/react/LexicalTableOfContentsPlugin.js
- @lexical/react/LexicalTablePlugin
- @lexical/react/LexicalTablePlugin.js
- @lexical/react/LexicalTreeView
- @lexical/react/LexicalTreeView.js
- @lexical/react/LexicalTypeaheadMenuPlugin
- @lexical/react/LexicalTypeaheadMenuPlugin.js
- @lexical/react/useLexicalEditable
- @lexical/react/useLexicalEditable.js
- @lexical/react/useLexicalIsTextContentEmpty
- @lexical/react/useLexicalIsTextContentEmpty.js
- @lexical/react/useLexicalNodeSelection
- @lexical/react/useLexicalNodeSelection.js
- @lexical/react/useLexicalSubscription
- @lexical/react/useLexicalSubscription.js
- @lexical/react/useLexicalTextEntity
- @lexical/react/useLexicalTextEntity.js
Readme
@lexical/react
This package provides a set of components and hooks for Lexical that allow for text editing in React applications.
Getting started
Install lexical and @lexical/react:
npm install --save lexical @lexical/reactBelow is an example of a basic plain text editor using lexical and @lexical/react (try it yourself).
import {$getRoot, $getSelection} from 'lexical';
import {useEffect} from 'react';
import {LexicalComposer} from '@lexical/react/LexicalComposer';
import {PlainTextPlugin} from '@lexical/react/LexicalPlainTextPlugin';
import {ContentEditable} from '@lexical/react/LexicalContentEditable';
import {HistoryPlugin} from '@lexical/react/LexicalHistoryPlugin';
import {OnChangePlugin} from '@lexical/react/LexicalOnChangePlugin';
import {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';
const theme = {
  // Theme styling goes here
  ...
}
// When the editor changes, you can get notified via the
// LexicalOnChangePlugin!
function onChange(editorState) {
  editorState.read(() => {
    // Read the contents of the EditorState here.
    const root = $getRoot();
    const selection = $getSelection();
    console.log(root, selection);
  });
}
// Lexical React plugins are React components, which makes them
// highly composable. Furthermore, you can lazy load plugins if
// desired, so you don't pay the cost for plugins until you
// actually use them.
function MyCustomAutoFocusPlugin() {
  const [editor] = useLexicalComposerContext();
  
useEffect(() => {
    // Focus the editor when the effect fires!
    editor.focus();
  }, [editor]);
  return null;
}
// Catch any errors that occur during Lexical updates and log them
// or throw them as needed. If you don't throw them, Lexical will
// try to recover gracefully without losing user data.
function onError(error) {
  throw error;
}
function Editor() {
  const initialConfig = {
    namespace: 'MyEditor',
    theme,
    onError,
  };
return (
    <LexicalComposer initialConfig={initialConfig}>
      <PlainTextPlugin
        contentEditable={<ContentEditable />}
        placeholder={<div>Enter some text...</div>}
      />
      <OnChangePlugin onChange={onChange} />
      <HistoryPlugin />
      <MyCustomAutoFocusPlugin />
    </LexicalComposer>
  );
}