API 概览
| 导出名称 | 描述 | 章节 |
|---|---|---|
(default) | Immer 核心 API,通常命名为 produce: import {produce} from "immer" | Produce |
applyPatches | 给定一个基本 state 或 draft,以及一组 patches ,应用 patches | Patches |
castDraft | 将任何不可变类型转换为其可变对应物。这只是一个转换,实际上并没有做任何事情。 | TypeScript |
castImmutable | 将任何可变类型转换为其不可变对应物。这只是一个转换,实际上并没有做任何事情。 | TypeScript |
createDraft | 给定一个基本 state,创建一个可变 draft,任何修改都将被记录下来 | createDraft / finishDraft |
current | 给定一个 draft 对象(不必是对象的根结点),对 draft 的当前状态进行快照 | Current |
Draft<T> | 暴露的 TypeScript 类型以将不可变类型转换为可变类型 | TypeScript |
enableMapSet() | 启用对 Map 和 Set 集合的支持。 | Installation |
enablePatches() | 启用对 JSON patches 的支持 | Installation |
finishDraft | 完成一个 draft,并返回最终的不可变 state | createDraft / finishDraft |
freeze | 冻结一个对象,使其不可变。在开发模式下,Immer 会自动冻结返回的 state。 | Freezing |
Immutable<T> | 暴露的 TypeScript 类型以将可变类型转换为不可变类型 | TypeScript |
nothing | 特殊标记,用于从 producer 中返回 undefined | 从 producers 返回新数据 |
original | 给定一个 draft 对象,返回其原始状态(如果有) | Original |
produceWithPatches | 类似于 produce,但同时返回 patches | Patches |
setAutoFreeze | 启用或禁用自动冻结返回的 state | Freezing |
setUseProxies | 启用或禁用使用 Proxies(在不支持 Proxies 的环境中) | Installation |
导入 immer
produce 作为默认导出,但也可以选择将其用作名称导入,因为这有利于一些较旧的项目设置。所以下面的导入都是正确的,这里推荐第一个:
javascript
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"