这就是我在^0.42.2版本的slate文本编辑器中获取块的方法。
import { Value, Block } from 'slate';
const value = loadInitialData ? Value.fromJSON(initialValue) : Value.create();
getTitle = (value) => {
const firstBlock = value.document.getBlocks().get(0);
const secondBlock = value.document.getBlocks().get(1);
const title = firstBlock.text ? firstBlock.text : 'No Title';
const subTitle = secondBlock.text ? secondBlock.text : 'No SubTitle';
return {title, subTitle};
}现在它经历了破坏性的更改,它的api完全改变了,我看不到任何示例如何从它的DOM中获取节点。
我尝试过此操作,但遇到错误:无法在节点中的路径找到后代:{“子节点”:[],“操作”:[],“选择”:null,“标记”:空,“历史”:{“undos”:[],"redos":[]}}
import { Node } from "slate";
const node = Node.get(editor, [0])
console.log("node",node)我想选择节点的第一个元素作为标题,然后将博客保存到数据库。我无法在过去的两天内取得进展,我阅读了整个github,阅读了几乎所有slate.js中无法解决的问题。
const getTitle = () => {
const [firstBlock, secondBlock] = value;
const title =
firstBlock && firstBlock.type === "heading-one"
? firstBlock.children[0].text
: "No title";
const subtitle =
secondBlock && secondBlock.type === "heading-two"
? secondBlock.children[0].text
: "No subtitle";
return {
title,
subtitle
};
};当我写这篇文章的时候,我收到一个错误,说"myValue是不可迭代的“。然后我换成了这个:
const firstBlock = myValue[0];
const secondBlock = myValue[1];现在,这两个值都返回undefined。这是我在文本编辑器上的值:

发布于 2021-04-12 22:25:32
我不确定你需要什么,但是你可以通过elemnts来编辑地图
const arr = Array.from(Node.elements(editor));
const [elemnt, path] = arr.find(([elem, path]) => {/* search things */});更多信息请点击此处:slate node docs
https://stackoverflow.com/questions/61377291
复制相似问题