我试图通过查看Slate.js来理解富文本示例,我看到了下面的代码片段,但我不理解。
const isBlockActive = (editor, format) => {
const [match] = Editor.nodes(editor, {
match: n => n.type === format,
})
return !!match
}我不是javascript方面的专家,而且我对类型记录和slate.js都是新手,所以我为不能更好地描述我的问题而道歉,但以下是我目前所理解和仍然不确定的内容:
(1) Editor.nodes()是一个返回Iterable的方法。什么是"const match“符号?这是javascript还是类型记录?
(2) "const [match]“中的"match”与"match : n => n.type === format“中的”match“相同吗?如果是这样的话,这是否意味着"const [match]“是一个数组,其中有一个元素是一个函数?如果是这样,那么为什么还要让Editor.nodes()返回一个Iterable呢?
(3)我知道双感叹号给了我一个布尔对象,但是由于我无法理解匹配是函数还是可迭代或其他什么东西,所以我不知道!!match的真伪告诉我Editor.nodes()返回的初始可迭代性是什么。
谢谢你给我的任何光,你可能会洒在我迷茫的脑子里!
发布于 2020-02-01 20:39:24
这就是所谓的数组破坏。match是一个变量,它包含由Editor.nodes函数返回的数组的第一个元素(或者更确切地说是迭代器产生的第一个值)。它几乎等于:
const match = Editor.nodes(...)[0];或者更准确地说:
const _it = Editor.nodes(...)[Symbol.iterator]().next();
const match = _it.done ? undefined : _it.value;发布于 2020-07-31 22:14:01
(1) Editor.nodes()是一个返回Iterable的方法。什么是"const match“符号?这是javascript还是类型记录?
它是JavaScript (和TypeScript) 数组破坏。Editor.nodes返回一个可迭代的,它被迭代来创建一个数组,并且这个数组的第一个元素被分配给match。我们只对是否至少有一个匹配感兴趣,所以查看数组的第一个元素会告诉我们这一点。
(2) "const match“中的"match”与"match :n => n.type === format“中的"match”相同吗?如果是这样的话,这是否意味着"const match“是一个包含一个元素的数组,它是一个函数?如果是这样,那么为什么还要让Editor.nodes()返回一个Iterable呢?
这两个变量是完全不同的,并且可能有(应该有?)用不同的名字来让事情更清楚。Editor.nodes()是Editor接口/API的一部分,它用于许多不同的事情。在这种情况下,我们只对第一个元素感兴趣。您可以使用它来查找和迭代editor.children中的所有节点,match函数对这些节点返回true。
(3)我知道双感叹号给了我一个布尔对象,但由于我无法理解匹配是函数还是可迭代或其他什么东西,所以我不知道Editor.nodes()返回的初始可迭代性是什么!match的真伪。
生成的match是一个节点对象,如果不匹配,则为。一个物体是真实的,而未定义的是虚幻的,并且在做!!只是把它转换成布尔值。
https://stackoverflow.com/questions/60020888
复制相似问题