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
包裹后会更快