1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-02-24 09:13:24 +01:00

102 lines
2.2 KiB
Markdown
Raw Normal View History

2016-07-11 13:19:39 -07:00
### `<Editor>`
2016-07-11 15:53:26 -07:00
```js
import { Editor } from 'Slate'
```
2016-07-11 13:19:39 -07:00
The top-level React component that renders the Slate editor itself.
2016-07-11 15:13:12 -07:00
- [Properties](#properties)
2016-07-11 15:53:26 -07:00
- [`onChange`](#onchange-function)
- [`plugins`](#plugins-array)
- [`state`](#state-state)
- [`...`](#)
2016-07-11 15:13:12 -07:00
- [Methods](#methods)
2016-07-11 15:53:26 -07:00
- [`getState()`](#getstate-state)
- [`onChange(state)`](#onchange-state-void)
2016-07-11 15:28:20 -07:00
2016-07-11 13:47:28 -07:00
### Properties
2016-07-11 13:22:41 -07:00
```js
<Editor
2016-07-11 13:19:39 -07:00
onChange={Function}
plugins={Array}
state={State}
/>
```
2016-07-11 13:42:36 -07:00
#### `onChange: Function`
2016-07-11 13:38:45 -07:00
2016-07-11 13:40:46 -07:00
A change handler that will be called with the newly-changed editor `state`. You should usually pass the newly changed `state` back into the editor through its `state` property. This hook allows you to add persistence logic to your editor.
2016-07-11 13:38:45 -07:00
2016-07-11 13:42:36 -07:00
#### `plugins: Array`
2016-07-11 13:27:34 -07:00
An array of [`Plugins`](../plugins) that define the editor's behavior.
2016-07-11 13:42:36 -07:00
#### `state: State`
2016-07-11 13:27:34 -07:00
A [`State`](../models/state) object representing the current state of the editor.
2016-07-11 13:19:39 -07:00
2016-07-11 13:31:08 -07:00
#### `...`
2016-07-11 13:27:34 -07:00
2016-07-11 13:47:28 -07:00
In addition to those two properties, the editor allows passing any of the properties that a [`Plugin`](../plugins) can define:
```js
<Editor
onBeforeInput={Function}
onChange={Function}
onKeyDown={Function}
onPaste={Function}
plugins={Array}
renderDecorations={Function}
renderMark={Function}
renderNode={Function}
state={State}
/>
```
These properties are actually just a convenience—an implicit plugin defintion. Internally, they are grouped together and turned into a plugin that is given first priority in the plugin stack.
For example, these two snippets of code are equivalent:
2016-07-11 13:31:08 -07:00
```js
2016-07-11 13:49:02 -07:00
const plugins = [
somePlugin
]
2016-07-11 13:33:46 -07:00
2016-07-11 13:31:08 -07:00
<Editor
2016-07-11 13:38:45 -07:00
onKeyDown={myKeyHandler}
2016-07-11 13:33:46 -07:00
plugins={plugins}
2016-07-11 13:31:08 -07:00
state={state}
/>
```
```js
2016-07-11 13:35:34 -07:00
const editorPlugin = {
2016-07-11 13:38:45 -07:00
onKeyDown: myKeyHandler
2016-07-11 13:35:34 -07:00
}
2016-07-11 13:31:08 -07:00
const plugins = [
2016-07-11 13:35:34 -07:00
editorPlugin,
somePlugin
2016-07-11 13:31:08 -07:00
]
<Editor
plugins={plugins}
state={state}
/>
```
2016-07-11 13:19:39 -07:00
2016-07-11 13:28:15 -07:00
### Methods
2016-07-11 13:19:39 -07:00
2016-07-11 15:12:15 -07:00
#### `getState() => State`
2016-07-11 13:19:39 -07:00
Return the editor's current internal state.
2016-07-11 13:27:34 -07:00
2016-07-11 15:12:15 -07:00
#### `onChange(state: State) => Void`
2016-07-11 13:27:34 -07:00
2016-07-11 13:47:28 -07:00
Effectively the same as `setState`. Invoking this method will update the state of the editor, running it through all of it's plugins, and passing it the parent component, before it cycles back down as the new `state` property of the editor.