### hasChildBlocksWithInserterSupport 返回一个布尔值,用于指示某个区块是否至少拥有一个支持插入器的子区块。 _使用示例_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const navigationBlockHasChildBlocksWithInserterSupport = useSelect( ( select ) => select( blocksStore ).hasChildBlocksWithInserterSupport( 'core/navigation' ), [] ); return (
{ sprintf( __( 'core/navigation 区块拥有支持插入器的子区块:%s' ), navigationBlockHasChildBlocksWithInserterSupport ) }
); }; ``` _参数说明_ - _state_ `Object`: 数据状态。 - _blockName_ `string`: 区块类型名称。 _返回值_ - `boolean`: 如果区块包含至少一个支持插入器的子区块则返回 true,否则返回 false。 ### isMatchingSearchTerm 如果给定名称或对象值的区块类型与搜索词匹配则返回 true,否则返回 false。 _使用示例_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const termFound = useSelect( ( select ) => select( blocksStore ).isMatchingSearchTerm( 'core/navigation', 'theme' ), [] ); return ({ sprintf( __( '在 block.json 的标题、关键词、分类或描述中找到搜索词:%s' ), termFound ) }
); }; ``` _参数说明_ - _state_ `Object`: 区块状态。 - _nameOrType_ `(string|Object)`: 区块名称或类型对象。 - _searchTerm_ `string`: 用于筛选的搜索词。 _返回值_ - `Object[]`: 区块类型是否与搜索词匹配。 ## 操作 此包中的操作不应直接使用。请改用[公共 API](/packages/blocks/README.md) 中列出的函数。 ### reapplyBlockTypeFilters 发出信号表示应重新计算所有区块类型。该操作使用存储的未处理区块类型和最近注册的所有筛选器列表。 它解决了第三方区块筛选器在第三方区块之后注册的问题。示例顺序:1. 筛选器 A → 2. 区块 B → 3. 区块 C → 4. 筛选器 D → 5. 筛选器 E → 6. 区块 F → 7. 筛选器 G。在此场景中,部分筛选器因注册过晚而无法应用于所有区块。 ### getFreeformFallbackBlockName 返回用于处理非区块内容的区块名称。 _用法_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const freeformFallbackBlockName = useSelect( ( select ) => select( blocksStore ).getFreeformFallbackBlockName(), [] ); return ( freeformFallbackBlockName && ({ sprintf( __( '自由形态降级区块名称:%s' ), freeformFallbackBlockName ) }
) ); }; ``` _参数_ - _state_ `Object`: 数据状态。 _返回值_ - `?string`: 用于处理非区块内容的区块名称。 ### getGroupingBlockName 返回用于处理区块分组的区块名称。 _用法_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const groupingBlockName = useSelect( ( select ) => select( blocksStore ).getGroupingBlockName(), [] ); return ( groupingBlockName && ({ sprintf( __( '默认分组区块名称:%s' ), groupingBlockName ) }
) ); }; ``` _参数_ - _state_ `Object`: 数据状态。 _返回值_ - `?string`: 用于处理区块分组的区块名称。 ### getUnregisteredFallbackBlockName 返回用于处理未注册区块的区块名称。 _用法_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const unregisteredFallbackBlockName = useSelect( ( select ) => select( blocksStore ).getUnregisteredFallbackBlockName(), [] ); return ( unregisteredFallbackBlockName && ({ sprintf( __( '未注册降级区块名称:%s' ), unregisteredFallbackBlockName ) }
) ); }; ``` _参数_ - _state_ `Object`: 数据状态。 _返回值_ - `?string`: 用于处理未注册区块的区块名称。 ### hasBlockSupport 如果区块定义了特定功能的支持则返回 true,否则返回 false。 _用法_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const paragraphBlockSupportClassName = useSelect( ( select ) => select( blocksStore ).hasBlockSupport( 'core/paragraph', 'className' ), [] ); return ({ sprintf( __( 'core/paragraph 是否支持自定义类名:%s' ), paragraphBlockSupportClassName ) }
); }; ``` _参数_ - _state_ `Object`: 数据状态。 - _nameOrType_ `(string|Object)`: 区块名称或类型对象。 - _feature_ `string`: 要测试的功能特性。 - _defaultSupports_ `boolean`: 未显式定义时是否默认支持该功能。 _返回值_ - `boolean`: 区块是否支持该功能。 ### hasChildBlocks 返回一个布尔值,指示区块是否包含子区块。 _用法_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const navigationBlockHasChildBlocks = useSelect( ( select ) => select( blocksStore ).hasChildBlocks( 'core/navigation' ), [] ); return ({ sprintf( __( 'core/navigation 是否包含子区块:%s' ), navigationBlockHasChildBlocks ) }
); }; ``` _参数_ - _state_ `Object`: 数据状态。 - _blockName_ `string`: 区块类型名称。 _返回值_ - `boolean`: 如果区块包含子区块则为 true,否则为 false。 # 区块类型数据 命名空间:`core/blocks` ## 选择器 ### getActiveBlockVariation 根据区块属性返回指定区块的激活变体。变体通过其 `isActive` 属性确定,该属性可以是区块属性键的数组或函数。 当为区块属性键数组时,将使用严格相等性检查将 `attributes` 与变体的属性进行比较。 当为函数类型时,该函数应接受区块属性和变体属性,并确定变体是否处于激活状态。该函数接受区块属性和变体属性,并确定变体是否处于激活状态。 _用法_ ```js import { __ } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { store as blockEditorStore } from '@wordpress/block-editor'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { // 此示例假设 core/embed 区块是区块编辑器中的第一个区块 const activeBlockVariation = useSelect( ( select ) => { // 获取区块列表 const [ firstBlock ] = select( blockEditorStore ).getBlocks(); // 返回第一个区块的激活区块变体 return select( blocksStore ).getActiveBlockVariation( firstBlock.name, firstBlock.attributes ); }, [] ); return activeBlockVariation && activeBlockVariation.name === 'spotify' ? ({ __( 'Spotify 变体' ) }
) : ({ __( '其他变体' ) }
); }; ``` _参数_ - _state_ `Object`: 数据状态 - _blockName_ `string`: 区块名称(例如:"core/columns") - _attributes_ `Object`: 用于确定激活变体的区块属性 - _scope_ `[WPBlockVariationScope]`: 区块变体作用域名称 _返回值_ - `(WPBlockVariation|undefined)`: 激活的区块变体 ### getBlockStyles 通过区块名称返回区块样式。 _用法_ ```js import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const buttonBlockStyles = useSelect( ( select ) => select( blocksStore ).getBlockStyles( 'core/button' ), [] ); return ({ sprintf( __( 'core/paragraph 支持的 anchor 值:%s' ), paragraphBlockSupportValue ) }
); }; ``` _参数_ - _state_ `Object`: 数据状态 - _nameOrType_ `(string|Object)`: 区块名称或类型对象 - _feature_ `Array|string`: 要检索的功能 - _defaultSupports_ `*`: 未明确定义时返回的默认值 _返回值_ - `?*`: 区块支持值 ### getBlockType 通过名称返回区块类型。 _用法_ ```js import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const paragraphBlock = useSelect( ( select ) => ( select ) => select( blocksStore ).getBlockType( 'core/paragraph' ), [] ); return ({ sprintf( __( '默认区块名称: %s' ), defaultBlockName ) }
) ); }; ``` _参数_ - _state_ `Object`: 数据状态。 _返回值_ - `?string`: 默认区块名称。 ### getDefaultBlockVariation 返回指定区块类型的默认区块变体。当存在多个标记为默认的变体时,将选择最后添加的项。这简化了注册覆盖操作。当未设置默认变体时,返回第一个项。 _用法_ ```js import { __, sprintf } from '@wordpress/i18n'; import { store as blocksStore } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; const ExampleComponent = () => { const defaultEmbedBlockVariation = useSelect( ( select ) => select( blocksStore ).getDefaultBlockVariation( 'core/embed' ), [] ); return ( defaultEmbedBlockVariation && ({ sprintf( __( 'core/embed 默认变体: %s' ), defaultEmbedBlockVariation.title ) }
) ); }; ``` _参数_ - _state_ `Object`: 数据状态。 - _blockName_ `string`: 区块类型名称。 - _scope_ `[WPBlockVariationScope]`: 区块变体作用域名称。 _返回值_ - `?WPBlockVariation`: 默认区块变体。