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 作为默认导出,但也可以选择将其用作名称导入,因为这有利于一些较旧的项目设置。所以下面的导入都是正确的,这里推荐第一个:
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"
相关内容
- 数组方法 学习如何在 Immer 中使用数组方法进行不可变更新。
- `createDraft` and `finishDraft` 了解 Immer 中 createDraft 和 finishDraft 函数的使用方法,以及如何处理异步更新。
- 基于 Immer 了解基于 Immer 构建的各种开源项目和库。
- 类 学习如何在 Immer 中使用自定义类和复杂对象。
- 从 draft 中提取当前 state 学习如何使用 Immer 的 current 函数从 draft 中提取当前状态的快照。
- 柯里化 producers 学习 Immer 中柯里化 produce 函数的使用方法,简化状态更新代码。