Skip to content

slate-vue3 is a highly customizable rich text framework with forked slate-react

License

Notifications You must be signed in to change notification settings

Guan-Erjia/slate-vue3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

296fde2 · Apr 8, 2025
Mar 29, 2025
Jan 4, 2025
Apr 8, 2025
Apr 4, 2025
Apr 8, 2025
Mar 29, 2025
Apr 4, 2025
Feb 12, 2025
Jan 23, 2025
Apr 5, 2025
Apr 4, 2025
Apr 8, 2025
Mar 3, 2025
Apr 5, 2025
Apr 3, 2025
Apr 5, 2025

Repository files navigation

slate-react library implemented with vue3


Why use it?

  1. ✨ Highly customizable features, use slate core at the bottom level
  2. ⚡ Use vue3 for high-performance rendering, and later connect to vapor mode
  3. ☕ The latest version of the core, design tends to be stable
  4. 👉 Check out the live demo of all of the examples

How to use?

1. Install slate-vue3

npm install slate-vue3

2. Now, you can use it in vue-sfc 👉 live demo

<script setup lang="ts">
import { h } from "vue";
import {
  Slate,
  Editable,
  defaultRenderLeaf,
  defaultRenderPlaceHolder,
} from "slate-vue3";
import { createEditor } from "slate-vue3/core";
import { withDOM } from "slate-vue3/dom";
import { withHistory } from "slate-vue3/history";

const initialValue = [
  {
    type: "paragraph",
    children: [{ text: "Let's start" }],
  },
];
const renderElement = ({ attributes, children }) =>
  h("p", attributes, children);
const editor = withHistory(withDOM(createEditor()));
editor.children = initialValue;
</script>

<template>
  <Slate
    :editor="editor"
    :render-element="renderElement"
    :render-leaf="defaultRenderLeaf"
    :render-placeholder="defaultRenderPlaceHolder"
  >
    <Editable />
  </Slate>
</template>

FAQ

1. Why do I have to pass renderFunction into component ?

This ensures that your rich text is as expected, and slate-vue3 provides some default rendering functions, you can directly use the default rendering behavior

2. Can I use jsx in slate-vue3 ?

Of coures yes, but we do not recommend it unless you have already configured jsx in the project, as a branch, using the h function directly is already simple enough

3. Why do rendering functions not use vue components ?

Vue uses lazy updates, rendering with components generates additional state, which can cause unexpected results during updates, it would be better to use functions as branches directly