Skip to content

Commit 4e67be9

Browse files
committed
perf(alita wx-react): 减少template是数组,JSX片段时候传递的数据
1 parent d8ddca6 commit 4e67be9

File tree

3 files changed

+15
-71
lines changed

3 files changed

+15
-71
lines changed

mptemp/childTemp.wxml

-50
This file was deleted.

packages/wx-react/miniprogram_dist/render.js

+12-18
Original file line numberDiff line numberDiff line change
@@ -166,16 +166,13 @@ export default function render(vnode, parentInst, parentContext, data, oldData,
166166
// key必须明确指定,对于不知道key的情况, React和小程序处理可能存在差异,造成两个平台的行为差异
167167

168168
let oldSubDataKeyMap = {}
169-
if (oldData && oldData[datakey] && oldData[datakey].isArray) {
170-
const oldSubDataList = oldData[datakey].v
169+
if (oldData && oldData[datakey] && Array.isArray(oldData[datakey])) {
170+
const oldSubDataList = oldData[datakey]
171171
oldSubDataKeyMap = getKeyDataMap(oldSubDataList, 'key')
172172
}
173173

174174
const subDataList = []
175-
data[datakey] = {
176-
isArray: true,
177-
v: subDataList
178-
}
175+
data[datakey] = subDataList
179176
for (let i = 0; i < tempVnode.length; i++) {
180177
const subVnode = tempVnode[i]
181178

@@ -186,7 +183,7 @@ export default function render(vnode, parentInst, parentContext, data, oldData,
186183
if (typeof subVnode === 'string'
187184
|| typeof subVnode === 'number'
188185
) {
189-
data[datakey].v.push(subVnode)
186+
data[datakey].push(subVnode)
190187
continue
191188
}
192189

@@ -204,29 +201,26 @@ export default function render(vnode, parentInst, parentContext, data, oldData,
204201

205202
const subData = {
206203
key: subKey,
207-
diuu: subVnode.diuu
204+
// diuu: subVnode.diuu
208205
}
209-
data[datakey].v.push(subData)
206+
data[datakey].push(subData)
210207

211208
// 假设 Ua 对应的key为 Ka, Ub对应的key为 Kb。
212209
// 当Ua的key由Ka --> Kb 的时候, 那么组件变为Ub负责来渲染这一块, 故而需要给予Ub对应的数据
213210
// 对于明确且唯一的key, 小程序和React处理是一致的
214-
const vIndex = data[datakey].v.length - 1
215-
render(subVnode, parentInst, parentContext, subData, oldSubDataKeyMap[subKey], `${dataPath}.${datakey}.v.[${vIndex}]`)
211+
const vIndex = data[datakey].length - 1
212+
render(subVnode, parentInst, parentContext, subData, oldSubDataKeyMap[subKey], `${dataPath}.${datakey}.[${vIndex}]`)
216213
}
217214
} else {
218215
let oldSubData = null
219-
if (oldData && oldData[datakey] && oldData[datakey].isJSX) {
220-
oldSubData = oldData[datakey].v
216+
if (oldData && oldData[datakey] && oldData[datakey].tempName) {
217+
oldSubData = oldData[datakey]
221218
}
222219

223220
const subData = {}
224-
data[datakey] = {
225-
isJSX: true,
226-
v: subData
227-
}
221+
data[datakey] = subData
228222

229-
render(tempVnode, parentInst, parentContext, subData, oldSubData, `${dataPath}.${datakey}.v`)
223+
render(tempVnode, parentInst, parentContext, subData, oldSubData, `${dataPath}.${datakey}`)
230224
}
231225
} else if (nodeName === 'phblock') {
232226
// 用于FlatList等外层, 用来占位

src/tran/geneWxml.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,13 @@ export default function(info) {
6767
// 如果只使用一个child 小程序会报递归, 然后就不渲染了
6868
const subT = `
6969
<template name="${name}">
70-
<block wx:if="{{isArray}}">
71-
<block wx:for="{{v}}" wx:key="key">
70+
<block wx:if="{{t.a(d)}}">
71+
<block wx:for="{{d}}" wx:key="key">
7272
<block wx:if="{{t.l(item)}}">{{item}}</block>
7373
<template wx:else is="{{item.tempName}}" data="{{...item}}"></template>
7474
</block>
7575
</block>
76-
<template wx:elif="{{isJSX}}" is="{{v.tempName}}" data="{{...v}}"></template>
76+
<template wx:elif="{{d.tempName}}" is="{{d.tempName}}" data="{{...d}}"></template>
7777
</template>
7878
`;
7979

0 commit comments

Comments
 (0)