id: api-reference-entity
title: Entity 实体
Entity
是一个静态模块,其中包含用于创建,检索和更新实体对象的API,该对象用于使用元数据注释文本范围。
该模块还包含用于维护实体数据的单个store(存储)
本文致力于介绍API的详细信息。 有关如何使用实体的更多详细信息,请参见有关实体的高级主题文章。
请注意,用于实体存储和管理的API最近已更改; 有关更新应用程序的详细信息,请参见我们的v0.10 API迁移指南。
Entity
(实体)的方法返回的实体对象表示为DraftEntityInstance immutable records。
这些具有少量的getter
函数,应仅用于检索。
总览
方法
-
- create(…): DraftEntityInstance
-
- add(instance: DraftEntityInstance): string
-
- get(key: string): DraftEntityInstance
-
- mergeData(…): DraftEntityInstance
-
- replaceData(…): DraftEntityInstance
方法
create
(不推荐使用 contentState.createEntity
)
create(
type: DraftEntityType,
mutability: DraftEntityMutability,
data?: Object
): string
应该使用create
方法来生成具有提供的属性的新实体对象
请注意,此函数返回一个字符串。
这是因为实体是通过ContentState
中的字符串键引用的。
应该在CharacterMetadata
对象中使用字符串值来跟踪带有注释字符的实体。
add
(不推荐使用 contentState.addEntity
)
add(instance: DraftEntityInstance): string
在大多数情况下,您将使用Entity.create()
。
这是一种便捷的方法,在典型的Draft
用法中您可能不需要。
在已经创建实例并且现在需要将其添加到Entity
存储的情况下,添加功能很有用。
如果要恢复ContentState
的原始JavaScript表示以进行编辑,则可能会发生这种情况。
get
(不推荐使用 contentState.getEntity
)
get(key: string): DraftEntityInstance
返回指定键的DraftEntityInstance
。
如果该键不存在实例,则抛出该异常。
mergeData
(不推荐使用 contentState.mergeEntityData
)
mergeData(
key: string,
toMerge: {[key: string]: any}
): DraftEntityInstance
由于DraftEntityInstance
对象是不可变的,因此您无法通过典型的可变方式来更新实体的元数据。
mergeData
方法允许您将更新应用于指定的实体。
replaceData
(不推荐使用 contentState.replaceEntityData
)
replaceData(
key: string,
newData: {[key: string]: any}
): DraftEntityInstance
replaceData
方法与mergeData
方法类似,不同之处在于它将完全丢弃实例的现有data
值并将其替换为指定的newData。