### 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 (
		<p>
			{ sprintf(
				__(
					'core/navigation 区块拥有支持插入器的子区块：%s'
				),
				navigationBlockHasChildBlocksWithInserterSupport
			) }
		</p>
	);
};
```

_参数说明_

-   _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 (
		<p>
			{ sprintf(
				__(
					'在 block.json 的标题、关键词、分类或描述中找到搜索词：%s'
				),
				termFound
			) }
		</p>
	);
};
```

_参数说明_

-   _state_ `Object`: 区块状态。
-   _nameOrType_ `(string|Object)`: 区块名称或类型对象。
-   _searchTerm_ `string`: 用于筛选的搜索词。

_返回值_

-   `Object[]`: 区块类型是否与搜索词匹配。

<!-- END TOKEN(Autogenerated selectors|../../../packages/blocks/src/store/selectors.js) -->

## 操作

此包中的操作不应直接使用。请改用[公共 API](/packages/blocks/README.md) 中列出的函数。

<!-- START TOKEN(Autogenerated actions|../../../packages/blocks/src/store/actions.js) -->

### reapplyBlockTypeFilters

发出信号表示应重新计算所有区块类型。该操作使用存储的未处理区块类型和最近注册的所有筛选器列表。

它解决了第三方区块筛选器在第三方区块之后注册的问题。示例顺序：1. 筛选器 A → 2. 区块 B → 3. 区块 C → 4. 筛选器 D → 5. 筛选器 E → 6. 区块 F → 7. 筛选器 G。在此场景中，部分筛选器因注册过晚而无法应用于所有区块。

<!-- END TOKEN(Autogenerated actions|../../../packages/blocks/src/store/actions.js) -->

### 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 && (
			<p>
				{ sprintf(
					__( '自由形态降级区块名称：%s' ),
					freeformFallbackBlockName
				) }
			</p>
		)
	);
};
```

_参数_

-   _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 && (
			<p>
				{ sprintf(
					__( '默认分组区块名称：%s' ),
					groupingBlockName
				) }
			</p>
		)
	);
};
```

_参数_

-   _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 && (
			<p>
				{ sprintf(
					__( '未注册降级区块名称：%s' ),
					unregisteredFallbackBlockName
				) }
			</p>
		)
	);
};
```

_参数_

-   _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 (
        <p>
            { sprintf(
                __( 'core/paragraph 是否支持自定义类名：%s' ),
                paragraphBlockSupportClassName
            ) }
        </p>
    );
};
```

_参数_

-   _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 (
		<p>
			{ sprintf(
				__( 'core/navigation 是否包含子区块：%s' ),
				navigationBlockHasChildBlocks
			) }
		</p>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态。
-   _blockName_ `string`: 区块类型名称。

_返回值_

-   `boolean`: 如果区块包含子区块则为 true，否则为 false。

# 区块类型数据

命名空间：`core/blocks`

## 选择器

<!-- START TOKEN(Autogenerated selectors|../../../packages/blocks/src/store/selectors.js) -->

### 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' ? (
		<p>{ __( 'Spotify 变体' ) }</p>
	) : (
		<p>{ __( '其他变体' ) }</p>
	);
};
```

_参数_

-   _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 (
		<ul>
			{ buttonBlockStyles &&
				buttonBlockStyles.map( ( style ) => (
					<li key={ style.name }>{ style.label }</li>
				) ) }
		</ul>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态
-   _name_ `string`: 区块类型名称

_返回值_

-   `Array?`: 区块样式

### getBlockSupport

返回指定功能的区块支持值（如果已定义）。

_用法_

```js
import { __, sprintf } from '@wordpress/i18n';
import { store as blocksStore } from '@wordpress/blocks';
import { useSelect } from '@wordpress/data';

const ExampleComponent = () => {
	const paragraphBlockSupportValue = useSelect(
		( select ) =>
			select( blocksStore ).getBlockSupport( 'core/paragraph', 'anchor' ),
		[]
	);

	return (
		<p>
			{ sprintf(
				__( 'core/paragraph 支持的 anchor 值：%s' ),
				paragraphBlockSupportValue
			) }
		</p>
	);
};
```

_参数_

-   _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 (
		<ul>
			{ paragraphBlock &&
				Object.entries( paragraphBlock.supports ).map(
					( blockSupportsEntry ) => {
						const [ propertyName, value ] = blockSupportsEntry;
						return (
							<li
								key={ propertyName }
							>{ `${ propertyName } : ${ value }` }</li>
						);
					}
				) }
		</ul>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态
-   _name_ `string`: 区块类型名称

_返回值_

-   `?Object`: 区块类型

### getBlockTypes

返回所有可用的区块类型。

_用法_

```js
import { store as blocksStore } from '@wordpress/blocks';
import { useSelect } from '@wordpress/data';

const ExampleComponent = () => {
	const blockTypes = useSelect(
		( select ) => select( blocksStore ).getBlockTypes(),
		[]
	);

	return (
		<ul>
			{ blockTypes.map( ( block ) => (
				<li key={ block.name }>{ block.title }</li>
			) ) }
		</ul>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态。

_返回值_

-   `Array`: 区块类型数组。

### getBlockVariations

根据区块名称返回区块变体。

_用法_

```js
import { store as blocksStore } from '@wordpress/blocks';
import { useSelect } from '@wordpress/data';

const ExampleComponent = () => {
	const socialLinkVariations = useSelect(
		( select ) =>
			select( blocksStore ).getBlockVariations( 'core/social-link' ),
		[]
	);

	return (
		<ul>
			{ socialLinkVariations &&
				socialLinkVariations.map( ( variation ) => (
					<li key={ variation.name }>{ variation.title }</li>
				) ) }
		</ul>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态。
-   _blockName_ `string`: 区块类型名称。
-   _scope_ `[WPBlockVariationScope]`: 区块变体作用域名称。

_返回值_

-   `(WPBlockVariation[]|void)`: 区块变体数组。

### getCategories

返回所有可用的区块分类。

_用法_

```js
import { store as blocksStore } from '@wordpress/blocks';
import { useSelect } from '@wordpress/data';

const ExampleComponent = () => {
	const blockCategories = useSelect(
		( select ) => select( blocksStore ).getCategories(),
		[]
	);

	return (
		<ul>
			{ blockCategories.map( ( category ) => (
				<li key={ category.slug }>{ category.title }</li>
			) ) }
		</ul>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态。

_返回值_

-   `WPBlockCategory[]`: 分类列表。

### getChildBlockNames

返回指定区块的子区块数组。

_用法_

```js
import { store as blocksStore } from '@wordpress/blocks';
import { useSelect } from '@wordpress/data';

const ExampleComponent = () => {
	const childBlockNames = useSelect(
		( select ) =>
			select( blocksStore ).getChildBlockNames( 'core/navigation' ),
		[]
	);

	return (
		<ul>
			{ childBlockNames &&
				childBlockNames.map( ( child ) => (
					<li key={ child }>{ child }</li>
				) ) }
		</ul>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态。
-   _blockName_ `string`: 区块类型名称。

_返回值_

-   `Array`: 子区块名称数组。

### getCollections

返回所有可用的集合。

_用法_

```js
import { store as blocksStore } from '@wordpress/blocks';
import { useSelect } from '@wordpress/data';

const ExampleComponent = () => {
	const blockCollections = useSelect(
		( select ) => select( blocksStore ).getCollections(),
		[]
	);

	return (
		<ul>
			{ Object.values( blockCollections ).length > 0 &&
				Object.values( blockCollections ).map( ( collection ) => (
					<li key={ collection.title }>{ collection.title }</li>
				) ) }
		</ul>
	);
};
```

_参数_

-   _state_ `Object`: 数据状态。

_返回值_

-   `Object`: 集合列表。

### getDefaultBlockName

返回默认区块名称。

_用法_

```js
import { __, sprintf } from '@wordpress/i18n';
import { store as blocksStore } from '@wordpress/blocks';
import { useSelect } from '@wordpress/data';

const ExampleComponent = () => {
	const defaultBlockName = useSelect(
		( select ) => select( blocksStore ).getDefaultBlockName(),
		[]
	);

	return (
		defaultBlockName && (
			<p>
				{ sprintf( __( '默认区块名称: %s' ), defaultBlockName ) }
			</p>
		)
	);
};
```

_参数_

-   _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 && (
			<p>
				{ sprintf(
					__( 'core/embed 默认变体: %s' ),
					defaultEmbedBlockVariation.title
				) }
			</p>
		)
	);
};
```

_参数_

-   _state_ `Object`: 数据状态。
-   _blockName_ `string`: 区块类型名称。
-   _scope_ `[WPBlockVariationScope]`: 区块变体作用域名称。

_返回值_

-   `?WPBlockVariation`: 默认区块变体。