original()
获取创建草稿时的原值,不包含更新函数的修改。
original(draft) 返回创建该草稿时的值,即基础状态中的对象,不包含本次更新的修改。
original<T>(draft: T): T用法
import { create, original } from 'mutative';
const baseState = {
foo: 'bar',
list: [{ text: 'todo' }],
};
const state = create(baseState, (draft) => {
draft.foo = 'foobar';
draft.list.push({ text: 'learning' });
expect(original(draft.list)).toEqual([{ text: 'todo' }]);
expect(original(draft.list)).toBe(baseState.list);
expect(original(draft.list)).not.toBe(draft.list);
});可用它比较草稿与原值,或在不创建草稿的情况下读取基础状态,因为原值不含代理。
- 返回的是基础状态对象本身,切勿修改。
- 对非草稿会抛错,包括基础状态、最终状态,以及更新函数赋入但未被创建草稿的值。可用
isDraft()检查。 - 基础状态中的对象经草稿读取后会成为代理,在草稿数组中搜索原对象会找不到。可使用
original(draft.list).indexOf(item)。
original() 反映修改前的状态,所以增删或移动元素后,查到的索引不再对应当前草稿。搜索当前草稿数组请使用 current()。
在 GitHub 上编辑
最后更新于 作者:unadlib