id: api-reference-entity

title: Entity 实体

Entity是一个静态模块,其中包含用于创建,检索和更新实体对象的API,该对象用于使用元数据注释文本范围。 该模块还包含用于维护实体数据的单个store(存储)

本文致力于介绍API的详细信息。 有关如何使用实体的更多详细信息,请参见有关实体的高级主题文章

请注意,用于实体存储和管理的API最近已更改; 有关更新应用程序的详细信息,请参见我们的v0.10 API迁移指南

Entity(实体)的方法返回的实体对象表示为DraftEntityInstance immutable records。 这些具有少量的getter函数,应仅用于检索。

总览

方法

方法

create (不推荐使用 contentState.createEntity)

  1. create(
  2. type: DraftEntityType,
  3. mutability: DraftEntityMutability,
  4. data?: Object
  5. ): string

应该使用create方法来生成具有提供的属性的新实体对象

请注意,此函数返回一个字符串。 这是因为实体是通过ContentState中的字符串键引用的。 应该在CharacterMetadata对象中使用字符串值来跟踪带有注释字符的实体。

add (不推荐使用 contentState.addEntity)

  1. add(instance: DraftEntityInstance): string

在大多数情况下,您将使用Entity.create()。 这是一种便捷的方法,在典型的Draft用法中您可能不需要。

在已经创建实例并且现在需要将其添加到Entity存储的情况下,添加功能很有用。 如果要恢复ContentState的原始JavaScript表示以进行编辑,则可能会发生这种情况。

get (不推荐使用 contentState.getEntity)

  1. get(key: string): DraftEntityInstance

返回指定键的DraftEntityInstance。 如果该键不存在实例,则抛出该异常。

mergeData (不推荐使用 contentState.mergeEntityData)

  1. mergeData(
  2. key: string,
  3. toMerge: {[key: string]: any}
  4. ): DraftEntityInstance

由于DraftEntityInstance对象是不可变的,因此您无法通过典型的可变方式来更新实体的元数据。

mergeData方法允许您将更新应用于指定的实体。

replaceData (不推荐使用 contentState.replaceEntityData)

  1. replaceData(
  2. key: string,
  3. newData: {[key: string]: any}
  4. ): DraftEntityInstance

replaceData方法与mergeData方法类似,不同之处在于它将完全丢弃实例的现有data值并将其替换为指定的newData。