TheSunny
doc-ios
doc-ios
  • Introduction
  • Walkthroughs
    • Installing Slate
    • Adding Event Handlers
    • Defining Custom Block Nodes
    • Applying Custom Formatting
    • Using Plugins
    • Saving to a Database
    • Saving and Loading HTML Content
  • Guides
    • Changes
    • Data Model
    • Plugins
    • Rendering
    • Schemas
  • General
    • Plugins
    • Resources
    • Contributing
    • Changelog
    • FAQ
  • Slate Core
    • Block
    • Change
    • Character
    • Data
    • Document
    • Inline
    • Mark
    • Node
    • Operation
    • Range
    • Schema
    • Text
    • Value
    • setKeyGenerator
    • resetKeyGenerator
  • Slate React
    • Editor
    • Plugins
    • Custom Nodes
    • Core Plugins
    • cloneFragment
    • findDOMNode
    • findDOMRange
    • findNode
    • findRange
    • getEventRange
    • getEventTransfer
    • setEventTransfer
  • Other Packages
    • slate-html-serializer
    • slate-hyperscript
    • slate-plain-serializer
    • slate-prop-types
    • slate-schema-violations
    • slate-simulator
  • Contributing
    • iOS Development Guide
Powered by GitBook
On this page
  • Props
  • attributes
  • children
  • editor
  • isSelected
  • node
  • parent
  • readOnly
  • shouldNodeComponentUpdate
  1. Slate React

Custom Nodes

PreviousPluginsNextCore Plugins

Last updated 7 years ago

Slate will render custom nodes for and models, based on what you pass in as your schema. This allows you to completely customize the rendering behavior of your Slate editor.

Props

<{Custom}
  attributes={Object}
  children={Object}
  editor={Editor}
  isSelected={Boolean}
  node={Node}
  parent={Node}
  readOnly={Boolean}
/>

attributes

Object

A dictionary of DOM attributes that you must attach to the main DOM element of the node you render. For example:

return <p {...props.attributes}>{props.children}</p>
return (
  <figure {...props.attributes}>
    <img src={...} />
  </figure>
)

children

Object

A set of React children elements that are composed of internal Slate components that handle all of the editing logic of the editor for you. You must render these as the children of your non-void nodes. For example:

return <p {...props.attributes}>{props.children}</p>

editor

Editor

const value = editor.value
editor.change(change => {
  change.selectAll().delete()
})

isSelected

Boolean

A boolean representing whether the node you are rendering is currently selected. You can use this to render a visual representation of the selection.

node

Node

parent

Node

readOnly

Boolean

Whether the editor is in "read-only" mode, where all of the rendering is the same, but the user is prevented from editing the editor's content.

shouldNodeComponentUpdate

By default, Slate implements a shouldComponentUpdate preventing useless re-renders for node components. While the default implementation covers most use cases, you can customize the logic to fit your needs. For example:

class CustomNode extends React.Component {
  static shouldNodeComponentUpdate(previousProps, nextProps) {
    // return true here to trigger a re-render
  }
}

If shouldNodeComponentUpdate returns false, Slate will still figure out whether a re-render is needed or not.

A reference to the Slate instance. This allows you to retrieve the current value of the editor, or perform a change on the value. For example:

A reference to the being rendered.

A reference to the parent of the current being rendered.

Block
Inline
<Editor>
Node
Node