API 概览
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
| Exported name | Description | Section |
|---|---|---|
produce | The core API of Immer: import {produce} from "immer" | Produce |
applyPatches | Given a base state or draft, and a set of patches, applies the patches | Patches |
castDraft | Converts any immutable type to its mutable counterpart. This is just a cast and doesn't actually do anything. | TypeScript |
castImmutable | Converts any mutable type to its immutable counterpart. This is just a cast and doesn't actually do anything. | TypeScript |
createDraft | Given a base state, creates a mutable draft for which any modifications will be recorded | Async |
current | Given a draft object (doesn't have to be a tree root), takes a snapshot of the current state of the draft | Current |
Draft<T> | Exposed TypeScript type to convert an immutable type to a mutable type | TypeScript |
enableArrayMethods() | Enables optimized array method handling for improved performance with array-heavy operations. | Array Methods |
enableMapSet() | Enables support for Map and Set collections. | Installation |
enablePatches() | Enables support for JSON patches. | Installation |
finishDraft | Given an draft created using createDraft, seals the draft and produces and returns the next immutable state that captures all the changes | Async |
freeze(obj, deep?) | Freezes draftable objects. Returns the original object. By default freezes shallowly, but if the second argument is true it will freeze recursively. | |
Immer | constructor that can be used to create a second "immer" instance (exposing all APIs listed in this instance), that doesn't share its settings with global instance. | |
immerable | Symbol that can be added to a constructor or prototype, to indicate that Immer should treat the class as something that can be safely drafted | Classes |
Immutable<T> | Exposed TypeScript type to convert mutable types to immutable types | |
isDraft | Returns true if the given object is a draft object | |
isDraftable | Returns true if Immer is capable of turning this object into a draft. Which is true for: arrays, objects without prototype, objects with Object as their prototype, objects that have the immerable symbol on their constructor or prototype | |
nothing | Value that can be returned from a recipe, to indicate that the value undefined should be produced | Return |
original | Given a draft object (doesn't have to be a tree root), returns the original object at the same path in the original state tree, if present | Original |
Patch | Exposed TypeScript type, describes the shape of an (inverse) patch object | Patches |
produceWithPatches | Works the same as produce, but instead of just returning the produced object, it returns a tuple, consisting of [result, patches, inversePatches]. | Patches |
setAutoFreeze | Enables / disables automatic freezing of the trees produces. By default enabled. | Freezing |
setUseStrictShallowCopy | Can be used to enable strict shallow copy. If enable, immer copies non-enumerable properties as much as possible. | Classes |
setUseStrictIteration | Controls iteration behavior: pass false for loose iteration (enumerable properties only, better performance) or true for strict iteration (includes symbols and non-enumerable properties). By default disabled (loose iteration). |
导入 immer
在大多数情况下,你只需要从 Immer 导入 produce:
import {produce} from "immer"
请注意,在旧版本中,produce 也可以作为默认导出(例如 import produce from "immer" 也是有效的),但这种情况已不再适用,以提升生态兼容性。