跳到主要内容

API 概览

导出名称描述章节
(default)Immer 核心 API,通常命名为 produce: import {produce} from "immer"Produce
applyPatches给定一个基本 state 或 draft,以及一组 patches ,应用 patchesPatches
castDraft将任何不可变类型转换为其可变对应物。这只是一个转换,实际上并没有做任何事情。TypeScript
castImmutable将任何可变类型转换为其不可变对应物。这只是一个转换,实际上并没有做任何事情。TypeScript
createDraft给定一个基本 state,创建一个可变 draft,任何修改都将被记录下来Async
current给定一个 draft 对象(不必是对象的根结点),对 draft 的当前状态进行快照Current
Draft<T>暴露的 TypeScript 类型以将不可变类型转换为可变类型TypeScript
enableMapSet()启用对 MapSet 集合的支持。Installation
enablePatches()启用对 JSON patches 的支持Installation
finishDraft给定使用 createDraft 创建的 draft,冻结 draft 并生成并返回下一个不可变状态,该状态捕获所有更改Async
freeze(obj, deep?)冻结可 draft 对象。返回原始对象。默认情况下浅冻结,但如果第二个参数为真,它将递归冻结。
Immer可用于创建第二个“immer”实例(暴露此实例中列出的所有 API)的构造函数,它不与全局实例共享其设置
immerable可以添加到构造函数或原型的符号,表示 Immer 应该将类视为可以安全 draft 的东西Classes
Immutable<T>暴露的 TypeScript 类型以将可变类型转换为不可变类型
isDraft如果给定对象是 draft 对象,则返回 true
isDraftable如果 Immer 能够将此对象变成 draft,则返回 true。这适用于:数组、没有原型的对象、以 Object 为原型的对象、在其构造函数或原型上具有 immerable 符号的对象
nothing可以从 recipe 返回的值,以指示应生成 undefinedReturn
original给定一个 draft 对象(不必是对象的根结点),返回原始状态树中相同路径的原始对象(如果存在)Original
Patch暴露的 TypeScript 类型,描述(反向)patches 对象的形状Patches
produceImmer 的核心 API,也暴露为 default 导出Produce
produceWithPatchesproduce 相同,但它不仅返回生成的对象,还返回一个由 [result, patch, inversePatches] 组成的元组Patches
setAutoFreeze启用/禁用递归的自动冻结。默认启用Freezing
setUseStrictShallowCopy可用于启用严格的浅拷贝。 如果启用,immer 会尽可能多地拷贝不可枚举属性Classes

导入 immer

produce 作为默认导出,但也可以选择将其用作名称导入,因为这有利于一些较旧的项目设置。所以下面的导入都是正确的,这里推荐第一个:

import {produce} from "immer"
import {produce} from "immer"

const {produce} = require("immer")
const produce = require("immer").produce
const produce = require("immer").default

import unleashTheMagic from "immer"
import {produce as unleashTheMagic} from "immer"