API overview
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 |
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 |
Importing immer​
In most cases, the only thing you need to import from Immer is produce
:
import {produce} from "immer"
Note that in older versions, produce
was also available as default export (e.g. import produce from "immer"
was also valid, but that is no longer the case to improve eco system compatibility.