Gutenberg 区块编辑器文档

title: "区块编辑器的数据" post_status: publish comment_status: open taxonomy: category: - gutenberg-docs post_tag: - Data - Reference Guides - Repos


区块编辑器的数据

命名空间:core/block-editor

选择器

areInnerBlocksControlled

检查给定区块是否具有受控内部区块。

参数

返回值

canEditBlock

判断给定区块是否允许被编辑。

参数

返回值

canInsertBlocks

判断给定的区块是否允许插入到区块列表中。

参数

返回值

canInsertBlockType

判断给定的区块类型是否允许插入到区块列表中。

参数

返回值

canLockBlockType

判断给定区块类型是否可由用户锁定/解锁。

参数

返回值

canMoveBlock

判断给定区块是否允许被移动。

参数

返回值

canMoveBlocks

判断给定的区块是否允许被移动。

参数

返回值

canRemoveBlock

判断给定区块是否允许被删除。

参数

返回值

canRemoveBlocks

判断给定的区块是否允许被移除。

参数

返回值

didAutomaticChange

如果最后一次更改是自动更改,则返回 true,否则返回 false。

参数

返回值

getAdjacentBlockClientId

返回在给定的起始客户端ID(startClientId)和方向性修饰符(modifier)方向上相邻的块的客户端ID。默认起始客户端ID为当前选中的块,方向为下一个块。如果没有相邻块,则返回null。

参数

返回值

getAllowedBlocks

返回内部区块子元素允许使用的插入器区块列表。

参数

返回值

getBlock

根据客户端 ID 返回一个区块。这是区块的解析副本,包含其 blockNameclientId 和当前 attributes 状态。这不是区块的注册设置,后者必须从区块模块注册存储中获取。

getBlock 会递归遍历其内部区块,直到检索完所有子区块。请注意,getBlock 不会返回内部区块控制器的子内部区块。这是因为内部区块控制器会与自身实体同步,因此不应包含在不同实体的区块中。例如,假设您调用 getBlocks( TP ) 来获取模板部件的区块。如果另一个模板部件是 TP 的子级,则嵌套模板部件的子区块将不会被返回。这样,模板区块本身被视为父级的一部分,但其子级则不是。

参数

返回值

getBlockAttributes

根据客户端 ID 返回区块的属性,如果不存在对应客户端 ID 的区块则返回 null。

参数

返回值

getBlockCount

返回当前文章中存在的区块数量。

参数

返回值

getBlockEditingMode

返回指定区块的编辑模式。

该模式可以是以下三种选项之一:

区块可以使用 useBlockEditingMode 钩子来设置模式。

该模式会被区块的所有内部区块继承,除非它们有自己的模式。

模板锁定也可以设置模式。如果模板锁定为 'contentOnly',并且区块具有内容角色属性,则区块的模式将被覆盖为 'contentOnly';否则将被覆盖为 'disabled'

相关

参数

返回值

getBlockHierarchyRootClientId

给定一个区块客户端 ID,返回该区块嵌套所在的层级结构根节点。对于根层级的区块,则返回其自身。

参数

返回值

getBlockIndex

返回指定客户端 ID 对应的区块在区块顺序中的索引位置,如果区块不存在则返回 -1

参数

返回值

getBlockInsertionPoint

返回插入提示的位置。默认为最后一个索引。

参数

返回值

getBlockListSettings

返回区块的块列表设置(如果存在)。

参数

返回值

getBlockMode

返回区块的编辑模式,若未明确指定则默认为"visual"。

参数

返回值

getBlockName

根据客户端 ID 返回区块名称,如果该客户端 ID 对应的区块不存在则返回 null。

参数

返回值

getBlockNamesByClientId

给定一个区块客户端 ID 数组,返回对应的区块名称数组。

参数

返回值

getBlockOrder

返回一个数组,包含编辑器中所有区块客户端 ID,按它们在编辑器中出现的顺序排列。可选择性地传入区块列表的根客户端 ID,以返回该列表的顺序,默认为顶级区块顺序。

参数

返回值

getBlockParents

给定一个区块的客户端 ID,返回其所有父级区块的列表,顺序为从上到下。

参数

返回值

getBlockParentsByBlockName

给定一个区块客户端 ID 和区块名称,返回其所有父级区块的列表(从上到下),并按给定名称进行筛选。例如,如果传入 'core/group' 作为 blockName,则仅返回属于分组区块的父级。如果传入 [ 'core/group', 'core/cover'] 作为 blockName,则返回属于分组区块和封面区块的父级。

参数

返回值

getBlockRootClientId

给定一个区块客户端 ID,返回该区块嵌套的根区块,顶级区块返回空字符串,若区块不存在则返回 null。

参数

返回值

getBlocks

返回当前正在编辑的文章的所有区块对象,以它们在文章中出现的顺序作为数组。注意:这将排除嵌套内部区块控制器的子区块。

参数

返回值

getBlocksByClientId

根据给定的区块客户端 ID 数组,返回对应的区块对象数组。

参数

返回值

getBlocksByName

返回所有匹配指定 blockName 的区块。结果包含嵌套区块。

参数

返回值

getBlockSelectionEnd

返回当前块选择结束位置。该值可能为空,可能表示单个块选择或多选结束位置。当选择的起始与结束位置匹配时,即为单个选择。

参数

返回值

getBlockSelectionStart

返回当前块选择的起始位置。该值可能为空,可能表示单个块选择或多选起始位置。当选择的起始与结束位置匹配时,即为单个选择。

参数

返回值

getBlockTransformItems

确定出现在可用块转换列表中的项目。

每个项目对象包含在转换列表中显示菜单项并处理其选择所需的内容。

'frecency' 属性是一种结合了块使用频率和最近使用时间的启发式算法(https://en.wikipedia.org/wiki/Frecency)。

返回的项目按其 'frecency' 值降序排列。

参数

返回值

类型定义

属性

getClientIdsOfDescendants

返回一个数组,包含给定块的所有后代块的 clientId。返回的 id 首先按给定 id 的顺序排序,然后按它们在编辑器中出现的顺序排序。

参数

返回值

getClientIdsWithDescendants

返回一个数组,包含顶级区块及其任意深度(针对嵌套区块)的所有后代区块的 clientId。返回的 ID 顺序与它们在编辑器中出现的顺序一致。

参数

返回值

getDirectInsertBlock

返回由区块添加器直接插入的区块。

参数

返回值

类型定义

属性

getDraggedBlockClientIds

返回任何被直接拖拽的区块的客户端 ID。

这不包括被拖拽父区块的子区块。

参数

返回值

getFirstMultiSelectedBlockClientId

返回多选集合中第一个区块的客户端 ID,若无多选则返回 null。

参数

返回值

getGlobalBlockCount

返回文章中的总块数,或具有特定名称的块的总数。返回的数量包括嵌套块。

参数

返回值

getHoveredBlockClientId

已弃用

返回当前悬停的区块。

getInserterItems

确定插入器中显示的项目。包括静态项目(例如常规区块类型)和动态项目(例如可重用区块)。

每个项目对象包含在插入器中显示按钮并处理其选择所需的内容。

'frecency' 属性是一种结合区块使用频率和新近度的启发式算法(https://en.wikipedia.org/wiki/Frecency)。

项目按其 'utility' 和 'frecency' 降序返回。

参数

返回值

类型定义

属性

getLastMultiSelectedBlockClientId

返回多选集合中最后一个区块的客户端 ID,若无多选则返回 null。

参数

返回值

getLowestCommonAncestorWithSelectedBlock

给定一个区块客户端 ID,返回与所选客户端 ID 的最低公共祖先。

参数

返回值

getMultiSelectedBlockClientIds

返回当前多选区块的客户端 ID 集合,若无多选则返回空数组。

参数

返回值

getMultiSelectedBlocks

返回当前的多选块集合,若无多选则返回空数组。

参数

返回值

getMultiSelectedBlocksEndClientId

返回多选集中结束块的客户端 ID,如果不存在多选则返回 null。

这不一定是选择中的最后一个客户端 ID。

相关

参数

返回值

getMultiSelectedBlocksStartClientId

返回多选集合起始区块的客户端 ID,若无多选则返回 null。

注意:这不一定是选中区块中的首个客户端 ID。

相关函数

参数

返回值

getNextBlockClientId

返回给定起始参考 ID 的下一个区块客户端 ID。默认从当前选中区块开始搜索。若无下一个区块则返回 null。

参数

返回值

getPatternsByBlockTypes

根据模式声明的 blockTypes 和区块名称返回模式列表。模式可以使用 blockTypes 集成到工作流中,例如在占位符状态(插入期间)或区块转换中建议合适的模式。

参数

返回

getPreviousBlockClientId

返回给定起始参考 ID 的前一个区块的客户端 ID。默认起始点为当前选中的区块。若无前一个区块则返回 null。

参数

返回值

getSelectedBlock

Returns the currently selected block, or null if there is no selected block.

Usage

import { select } from '@wordpress/data';
import { store as blockEditorStore } from '@wordpress/block-editor';

// Set initial active block client ID
let activeBlockClientId = null;

const getActiveBlockData = () => {
    const activeBlock = select( blockEditorStore ).getSelectedBlock();

    if ( activeBlock && activeBlock.clientId !== activeBlockClientId ) {
        activeBlockClientId = activeBlock.clientId;

        // Get active block name and attributes
        const activeBlockName = activeBlock.name;
        const activeBlockAttributes = activeBlock.attributes;

        // Log active block name and attributes
        console.log( activeBlockName, activeBlockAttributes );
    }
};

// Subscribe to changes in the editor
// wp.data.subscribe(() => {
// getActiveBlockData()
// })

// Update active block data on click
// onclick="getActiveBlockData()"

Parameters

Returns

getSelectedBlockClientId

返回当前选中的区块客户端 ID,若无选中区块则返回 null。

参数

返回值

getSelectedBlockClientIds

返回当前选中的区块客户端 ID 集合(多选或单选)。

参数

返回值

getSelectedBlockCount

返回当前文章中选中的区块数量。

参数

返回值

getSelectedBlocksInitialCaretPosition

返回所选块的初始光标位置。此位置用于在所选块更改时正确定位光标。如果当前块不是 RichText,将初始位置设置为 0 表示“聚焦块”。

参数

返回值

getSelectionEnd

返回当前选区结束块的客户端 ID、属性键和文本偏移量。

参数

返回值

getSelectionStart

返回当前选区起始块的客户端 ID、属性键和文本偏移量。

参数

返回值

getSettings

返回编辑器设置。

参数

返回

getTemplate

返回已定义的区块模板。

参数

返回

getTemplateLock

返回已定义的区块模板锁定。可选择性地接受一个根区块客户端 ID 作为上下文,否则默认为全局上下文。

参数

返回值

hasBlockMovingClientId

已弃用

返回是否启用了块移动模式。

hasDraggedInnerBlock

如果块的某个内部块被拖动,则返回 true。

参数

返回值

hasInserterItems

判断插入器中是否有可显示的项。

参数

返回值

hasMultiSelection

如果已进行多选,则返回 true,否则返回 false。

参数

返回值

hasSelectedBlock

如果存在单个选中的区块则返回 true,否则返回 false。

参数

返回值

hasSelectedInnerBlock

如果块的某个内部块被选中,则返回 true。

参数

返回值

isAncestorBeingDragged

返回指定块的父级/祖先是否正在被拖拽。

参数

返回值

isAncestorMultiSelected

如果块的祖先被多选,则返回 true,否则返回 false。

参数

返回值

isBlockBeingDragged

返回该区块是否正在被拖动。

仅当区块被直接拖动时才返回 true,如果区块是被拖动的父区块的子区块,则不返回 true。对于子区块,请参见 isAncestorBeingDragged

参数

返回值

isBlockHighlighted

如果当前高亮的区块与指定的区块 clientId 匹配,则返回 true。

参数

返回值

isBlockInsertionPointVisible

如果块插入点可见,则返回 true。

参数

返回

isBlockMultiSelected

如果客户端 ID 出现在块多选范围内则返回 true,否则返回 false。

参数

返回值

isBlockSelected

如果指定客户端 ID 对应的区块当前被选中且不存在多选,则返回 true,否则返回 false。

参数

返回值

isBlockValid

返回一个区块是否有效。

参数

返回值

isBlockVisible

判断区块在画布上是否可见。

参数

返回值

isBlockWithinSelection

如果指定客户端 ID 对应的区块当前被选中但不是选中区块中的最后一个,则返回 true。此处的"最后一个"指的是文档中的区块顺序,_而非_多重选择的顺序,这就是为什么未使用 state.selectionEnd 的原因。

参数

返回值

isCaretWithinFormattedText

已弃用

如果光标位于格式化文本内则返回 true,否则返回 false。

返回值

isDraggingBlocks

如果用户正在拖拽区块则返回 true,否则返回 false。

参数

返回值

isFirstMultiSelectedBlock

如果存在多重选择,并且指定客户端 ID 对应的区块是多选集合中的第一个区块,则返回 true,否则返回 false。

参数

返回值

isGroupable

指示提供的区块(通过客户端 ID)是否可分组。我们需要至少有一个区块,设置了分组区块名称,并且能够移除这些区块。

参数

返回值

isLastBlockChangePersistent

如果最近的区块更改被认为是持久性的,则返回 true,否则返回 false。持久性更改是指除了 onInput 之外,由 BlockEditorProvider 通过其 onChange 回调提交的更改。

参数

返回值

isMultiSelecting

是否处于多选过程中。此标志仅在通过鼠标移动进行多选时保持为真,一旦多选操作完成即变为假。

相关项

参数

返回值

isSelectionEnabled

选择器,用于返回是否启用了多选功能。

参数

返回值

isTyping

如果用户正在输入则返回 true,否则返回 false。

参数

返回值

isUngroupable

指示一个区块是否可解组。如果一个区块是包含内部区块的单一分组区块,则该区块可解组。如果一个区块具有 ungroup 转换,则它也可解组,无需满足是默认分组区块的要求。此外,一个区块只有在具有内部区块且可被移除时才能被解组。分区区块不可解组。

参数

返回值

isValidTemplate

返回区块是否与模板匹配。

参数

返回值

wasBlockJustInserted

判断具有指定 clientId 的区块是否刚刚被插入。

参数

返回值

操作

clearSelectedBlock

用于清除区块选择的操作。

返回值

duplicateBlocks

用于复制一组块的操作。

参数

enterFormattedText

已弃用

返回一个操作对象,用于表示光标已进入格式化文本区域。

返回值

exitFormattedText

已弃用

返回一个动作对象,用于表示用户光标已退出格式化文本。

返回值

flashBlock

通过有节奏地高亮显示,对具有给定 clientId 的区块进行“闪烁”的动作。

参数

hideInsertionPoint

用于隐藏插入点的操作。

hoverBlock

已弃用

返回一个操作对象,用于表示指定客户端 ID 的区块已被悬停。

insertAfterBlock

在指定区块后插入默认区块的操作。

参数

insertBeforeBlock

在指定区块前插入默认区块的操作。

参数

insertBlock

用于插入单个块的操作,可选择在根块列表的特定索引处插入。

仅允许插入已授权的块。对于未授权的块或块列表上存在模板锁的情况,此操作可能会静默失败。

参数

返回值

insertBlocks

用于插入块数组的操作,可选择在根块列表的特定索引处插入。

仅允许的块会被插入。对于不被允许的块,或块列表上存在模板锁时,此操作可能会静默失败。

参数

返回值

insertDefaultBlock

向区块列表添加默认类型新块的操作。

参数

mergeBlocks

用于合并两个区块的操作。

参数

moveBlocksDown

未记录的声明。

moveBlocksToPosition

将指定区块移动到新位置的操作。

参数

moveBlocksUp

未记录的声明。

moveBlockToPosition

将指定块移动到新位置的操作。

参数

multiSelect

用于更改块多选状态的操作。

参数

receiveBlocks

已弃用

返回一个用于表示已接收块的动作对象。与 resetBlocks 不同,这些块应追加到现有已知集合中,而非替换。

参数

返回值

registerInserterMediaCategory

Registers a new inserter media category. Once registered, the media category is available in the inserter's media tab.

The following interfaces are used:

Type Definition

Properties

Type Definition

Properties

Usage

wp.data.dispatch( 'core/block-editor' ).registerInserterMediaCategory( {
    name: 'openverse',
    labels: {
        name: 'Openverse',
        search_items: 'Search Openverse',
    },
    mediaType: 'image',
    async fetch( query = {} ) {
        const defaultArgs = {
            mature: false,
            excluded_source: 'flickr,inaturalist,wikimedia',
            license: 'pdm,cc0',
        };
        const finalQuery = { ...query, ...defaultArgs };
        // Sometimes you might need to map the supported request params according to `InserterMediaRequest`.
        // interface. In this example the `search` query param is named `q`.
        const mapFromInserterMediaRequest = {
            per_page: 'page_size',
            search: 'q',
        };
        const url = new URL( 'https://api.openverse.org/v1/images/' );
        Object.entries( finalQuery ).forEach( ( [ key, value ] ) => {
            const queryKey = mapFromInserterMediaRequest[ key ] || key;
            url.searchParams.set( queryKey, value );
        } );
        const response = await window.fetch( url, {
            headers: {
                'User-Agent': 'WordPress/inserter-media-fetch',
            },
        } );
        const jsonResponse = await response.json();
        const results = jsonResponse.results;
        return results.map( ( result ) => ( {
            ...result,
            // If your response result includes an `id` prop that you want to access later, it should
            // be mapped to `InserterMediaItem`'s `sourceId` prop. This can be useful if you provide
            // a report URL getter.
            // Additionally you should always clear the `id` value of your response results because
            // it is used to identify WordPress media items.
            sourceId: result.id,
            id: undefined,
            caption: result.caption,
            previewUrl: result.thumbnail,
        } ) );
    },
    getReportUrl: ( { sourceId } ) =>
        `https://wordpress.org/openverse/image/${ sourceId }/report/`,
    isExternalResource: true,
} );

Parameters

类型定义

属性

removeBlock

返回一个用于发出信号的动作对象,表示将移除具有指定客户端 ID 的区块。

参数

返回值

removeBlocks

生成用于指示应移除与指定客户端 ID 集合对应的区块的操作对象。

参数

replaceBlock

用于将单个区块替换为一个或多个替换区块的操作。

参数

返回值

replaceBlocks

用于将指定区块替换为一个或多个新区块的操作。

参数

返回值

replaceInnerBlocks

返回一个用于发出信号的动作对象,表示应替换指定客户端 ID 的内部区块。

参数

返回值

resetBlocks

将区块状态重置为指定区块数组的操作,优先于任何其他在状态中反映为编辑的内容。

参数

resetSelection

返回一个用于指示应将选择状态重置为指定选择的操作对象。

参数

返回值

selectBlock

返回一个动作对象,用于指示已选择具有指定客户端 ID 的区块,并可选择接受反映其选择方向性的位置值。初始位置为 -1 表示反向选择。

参数

返回值

selectionChange

用于更改用户光标位置的操作。

参数

返回值

selectNextBlock

生成用于指示应选择给定 clientId 之后区块的动作对象。

参数

selectPreviousBlock

生成用于指示应选择给定 clientId 之前区块(或可选地,从下至上其首个父级区块)的动作对象。

参数

setBlockEditingMode

为指定区块设置区块编辑模式。

相关

参数

返回值

setBlockMovingClientId

已弃用

设置正在移动的区块的客户端 ID。

返回值

setBlockVisibility

设置指定区块在画布上是否可见的操作。

参数

setHasControlledInnerBlocks

设置一个区块是否拥有受控内部区块的操作。

参数

setTemplateValidity

重置模板有效性的操作。

参数

返回值

showInsertionPoint

显示插入点的操作。

参数

返回值

属性

startDraggingBlocks

返回一个动作对象,用于表示用户已开始拖拽区块。

参数

返回值

startMultiSelect

启动区块多选操作的动作。

返回值

startTyping

返回一个动作对象,用于表示用户已开始输入。

返回值

stopDraggingBlocks

返回一个动作对象,用于表示用户已停止拖拽区块。

返回值

stopMultiSelect

停止区块多选的动作。

返回值

stopTyping

返回一个动作对象,用于表示用户已停止输入。

返回值

synchronizeTemplate

将模板与区块列表同步的动作。

返回值

toggleBlockHighlight

用于切换高亮块状态的操作。

参数

toggleBlockMode

返回一个用于在可视化模式和 HTML 模式之间切换块编辑模式的操作对象。

参数

返回值

toggleSelection

启用或禁用块选择的操作。

参数

返回

unsetBlockEditingMode

清除指定区块的区块编辑模式。

相关

参数

返回

updateBlock

用于更新指定客户端 ID 区块的操作。

参数

返回值

updateBlockAttributes

用于更新指定客户端 ID 对应多个区块属性的操作。

参数

返回值

updateBlockListSettings

用于更改指定区块嵌套设置的操作。

参数

返回值

updateSettings

更新区块编辑器设置的操作。

参数

返回值

validateBlocksToTemplate

区块有效性取决于区块状态(在重置时)和模板设置。作为对其分散在不同状态部分的一种折中方案,它在此处被实现为区块重置操作的一个副作用。

参数