首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在新的api中使用Slate.js getBlocks()?

在新的api中使用Slate.js getBlocks()?
EN

Stack Overflow用户
提问于 2020-04-23 08:21:40
回答 1查看 743关注 0票数 1

这就是我在^0.42.2版本的slate文本编辑器中获取块的方法。

代码语言:javascript
复制
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":[]}}

代码语言:javascript
复制
import { Node } from "slate";
const node = Node.get(editor, [0])
console.log("node",node)

我想选择节点的第一个元素作为标题,然后将博客保存到数据库。我无法在过去的两天内取得进展,我阅读了整个github,阅读了几乎所有slate.js中无法解决的问题。

代码语言:javascript
复制
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是不可迭代的“。然后我换成了这个:

代码语言:javascript
复制
const firstBlock = myValue[0];
const secondBlock = myValue[1];

现在,这两个值都返回undefined。这是我在文本编辑器上的值:

EN

回答 1

Stack Overflow用户

发布于 2021-04-12 22:25:32

我不确定你需要什么,但是你可以通过elemnts来编辑地图

代码语言:javascript
复制
const arr = Array.from(Node.elements(editor));
const [elemnt, path] = arr.find(([elem, path]) => {/* search things */});

更多信息请点击此处:slate node docs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61377291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档