跳到主要内容

original

获得草稿对象指定节点的原始数据

import { createDraft, original } from 'limu';

const base = { a: 1, b: 2, c: [1, 2, 3], d: { d1: 1, d2: 2 } };
const draft = createDraft(base);
const oriList = original(draft.c);
// 或
const oriList = original(draft).c;

在遍历大数组且只修改部分子元素的数据场景时,用original可提高遍历速度

// faster
original(draft.c).forEach((item, idx) => {
if (item.id === 'xxx') {
draft.c[idx].name = 'newName';
}
});

// slow
draft.c.forEach((item, idx) => {
if (item.id === 'xxx') {
draft.c[idx].name = 'newName';
}
});
提示

因为forEach会触发将所有子元素生成代理对象的操作,所以使用original包裹后会更快