提交 95177e1d 编写于 作者: fxy060608's avatar fxy060608

feat(v3): improve diff data

上级 da08c565
......@@ -9102,15 +9102,21 @@ var serviceContext = (function () {
data[k] = v;
}
function diffObject (id, newObj, oldObj, result) {
let key, cur, old;
function diffObject (newObj, oldObj) {
let result, key, cur, old;
for (key in newObj) {
cur = newObj[key];
old = oldObj[key];
if (old !== cur) {
setResult(result[id] || (result[id] = {}), key, cur);
if (key === 's' && isPlainObject(cur) && isPlainObject(old)) {
const style = diffObject(cur, old);
style && setResult(result || (result = Object.create(null)), 's', style);
} else {
setResult(result || (result = Object.create(null)), key, cur);
}
}
}
return result
}
function diff (newData, oldData, result) {
......@@ -9122,7 +9128,8 @@ var serviceContext = (function () {
setResult(result, id, cur);
continue
}
diffObject(id, cur, old, result);
const idObj = diffObject(cur, old);
idObj && setResult(result, id, idObj);
}
return result
}
......
import {
isPlainObject
} from 'uni-shared'
function setResult (data, k, v) {
data[k] = v
}
function diffObject (id, newObj, oldObj, result) {
let key, cur, old
function diffObject (newObj, oldObj) {
let result, key, cur, old
for (key in newObj) {
cur = newObj[key]
old = oldObj[key]
if (old !== cur) {
setResult(result[id] || (result[id] = {}), key, cur)
if (key === 's' && isPlainObject(cur) && isPlainObject(old)) {
const style = diffObject(cur, old)
style && setResult(result || (result = Object.create(null)), 's', style)
} else {
setResult(result || (result = Object.create(null)), key, cur)
}
}
}
return result
}
export function diff (newData, oldData, result) {
......@@ -22,7 +32,8 @@ export function diff (newData, oldData, result) {
setResult(result, id, cur)
continue
}
diffObject(id, cur, old, result)
const idObj = diffObject(cur, old)
idObj && setResult(result, id, idObj)
}
return result
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册