Skip to content

Commit 67e90ed

Browse files
authored
Merge pull request #1177 from Meituan-Dianping/hucq/code-style
Hucq/code style
2 parents 68a158d + 6662fb5 commit 67e90ed

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

src/core/observer/index.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,6 @@ export function defineReactive (
147147
return
148148
}
149149

150-
// TODO: 先试验标记一下 keyPath
151-
152150
// cater for pre-defined getter/setters
153151
const getter = property && property.get
154152
const setter = property && property.set
@@ -222,8 +220,10 @@ export function set (target: Array<any> | Object, key: any, val: any): any {
222220
return val
223221
}
224222
defineReactive(ob.value, key, val)
225-
// Vue.set 添加对象属性,渲染时候把val传给小程序渲染
226-
target.__keyPath = target.__keyPath ? target.__keyPath : {}
223+
// Vue.set 添加对象属性,渲染时候把 val 传给小程序渲染
224+
if (!target.__keyPath) {
225+
target.__keyPath = {}
226+
}
227227
target.__keyPath[key] = true
228228
ob.dep.notify()
229229
return val
@@ -252,8 +252,10 @@ export function del (target: Array<any> | Object, key: any) {
252252
if (!ob) {
253253
return
254254
}
255-
target.__keyPath = target.__keyPath ? target.__keyPath : {}
256-
// Vue.del 删除对象属性,渲染时候把这个属性设置为undefined
255+
if (!target.__keyPath) {
256+
target.__keyPath = {}
257+
}
258+
// Vue.del 删除对象属性,渲染时候把这个属性设置为 undefined
257259
target.__keyPath[key] = 'del'
258260
ob.dep.notify()
259261
}

src/platforms/mp/runtime/diff-data.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ function getDeepData (keyList, viewData) {
1818
}
1919
}
2020
}
21+
2122
function compareAndSetDeepData (key, newData, vm, data) {
2223
// 比较引用类型数据
2324
try {
2425
const keyList = key.split('.')
25-
//page.__viewData__老版小程序不存在,使用mpvue里绑的data比对
26+
// page.__viewData__老版小程序不存在,使用mpvue里绑的data比对
2627
const oldData = getDeepData(keyList, vm.$root.$mp.page.data)
2728
if (oldData === null || JSON.stringify(oldData) !== JSON.stringify(newData)) {
2829
data[key] = newData
@@ -106,7 +107,7 @@ export function diffData (vm, data) {
106107
})
107108
// console.log(rootKey)
108109

109-
// 值类型变量不考虑优化,还是直接更新
110+
// 值类型变量不考虑优化,还是直接更新
110111
const __keyPathOnThis = vmData.__keyPath || vm.__keyPath || {}
111112
delete vm.__keyPath
112113
delete vmData.__keyPath
@@ -115,11 +116,11 @@ export function diffData (vm, data) {
115116
// 第二次赋值才进行缩减操作
116117
Object.keys(vmData).forEach((vmDataItemKey) => {
117118
if (vmData[vmDataItemKey] instanceof Object) {
118-
// 引用类型
119+
// 引用类型
119120
if (vmDataItemKey === '__keyPath') { return }
120121
minifyDeepData(rootKey, vmDataItemKey, vmData[vmDataItemKey], data, vm._mpValueSet, vm)
121-
} else if(vmData[vmDataItemKey] !== undefined){
122-
// _data上的值属性只有要更新的时候才赋值
122+
} else if (vmData[vmDataItemKey] !== undefined) {
123+
// _data上的值属性只有要更新的时候才赋值
123124
if (__keyPathOnThis[vmDataItemKey] === true) {
124125
data[rootKey + '.' + vmDataItemKey] = vmData[vmDataItemKey]
125126
}
@@ -131,7 +132,7 @@ export function diffData (vm, data) {
131132
// 引用类型
132133
if (vmPropsItemKey === '__keyPath') { return }
133134
minifyDeepData(rootKey, vmPropsItemKey, vmProps[vmPropsItemKey], data, vm._mpValueSet, vm)
134-
} else if(vmProps[vmPropsItemKey] !== undefined){
135+
} else if (vmProps[vmPropsItemKey] !== undefined) {
135136
data[rootKey + '.' + vmPropsItemKey] = vmProps[vmPropsItemKey]
136137
}
137138
// _props上的值属性只有要更新的时候才赋值
@@ -146,11 +147,11 @@ export function diffData (vm, data) {
146147
Object.keys(vmComputedWatchers).forEach((computedItemKey) => {
147148
data[rootKey + '.' + computedItemKey] = vm[computedItemKey]
148149
})
149-
// 更新的时候要删除$root.0:{},否则会覆盖原正确数据
150+
// 更新的时候要删除$root.0:{},否则会覆盖原正确数据
150151
delete data[rootKey]
151152
}
152153
if (vm._mpValueSet === undefined) {
153-
// 第一次设置数据成功后,标记位置true,再更新到这个节点如果没有keyPath数组认为不需要更新
154+
// 第一次设置数据成功后,标记位置true,再更新到这个节点如果没有keyPath数组认为不需要更新
154155
vm._mpValueSet = 'done'
155156
}
156157
if (Vue.config.devtools) {

src/platforms/mp/runtime/render.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// 节流方法,性能优化
22
import { getComKey } from '../util/index'
3-
43
import { diffData } from './diff-data'
54

65
// 全局的命名约定,为了节省编译的包大小一律采取形象的缩写,说明如下。
@@ -131,7 +130,6 @@ function getPage (vm) {
131130
}
132131

133132
// 优化js变量动态变化时候引起全量更新
134-
135133
// 优化每次 setData 都传递大量新数据
136134
export function updateDataToMP () {
137135
const page = getPage(this)
@@ -140,9 +138,7 @@ export function updateDataToMP () {
140138
}
141139

142140
const data = formatVmData(this)
143-
144141
diffData(this, data)
145-
146142
throttleSetData(page.setData.bind(page), data)
147143
}
148144

0 commit comments

Comments
 (0)