从草稿中提取原始状态
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
Immer 提供了一个具名导出 original,用于在 produce 内部从代理实例中获取原始对象(对于未代理的值则返回 undefined)。在树形状态中通过严格相等性查找节点时,这个功能特别有用。
import {original, produce} from "immer"
const baseState = {users: [{name: "Richie"}]}
const nextState = produce(baseState, draftState => {
original(draftState.users) // is === baseState.users
})
仅需判断某个值是否为代理实例?请使用 isDraft 函数!请注意:original 无法在非草稿对象上调用。
import {isDraft, produce} from "immer"
const baseState = {users: [{name: "Bobby"}]}
const nextState = produce(baseState, draft => {
isDraft(draft) // => true
isDraft(draft.users) // => true
isDraft(draft.users[0]) // => true
})
isDraft(nextState) // => false