diff --git a/packages/uni-app-plus/dist/index.v3.js b/packages/uni-app-plus/dist/index.v3.js index c9e22b880839a622c571abb28384cb0e17303dc5..415ac4f3862e7bf55d6fc4edee65b6f403339d2f 100644 --- a/packages/uni-app-plus/dist/index.v3.js +++ b/packages/uni-app-plus/dist/index.v3.js @@ -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 } diff --git a/src/platforms/app-plus/service/framework/plugins/diff.js b/src/platforms/app-plus/service/framework/plugins/diff.js index cf831537a404e9b7f5f578d39d8f77385f1ab908..9e02fcf8ca543938434ab3470c86032f242d9011 100644 --- a/src/platforms/app-plus/service/framework/plugins/diff.js +++ b/src/platforms/app-plus/service/framework/plugins/diff.js @@ -1,16 +1,26 @@ +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 }