File tree 1 file changed +46
-0
lines changed
packages/wx-react/miniprogram_dist
1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,52 @@ import reactUpdate from './ReactUpdate'
14
14
import shallowEqual from './shallowEqual'
15
15
import getObjSubData from './getObjSubData'
16
16
17
+ /**
18
+ *
19
+ * firstUpdateUI 组件初次渲染
20
+ * updateUI 组件更新
21
+ *
22
+ * 出于对性能的考虑,我们希望react层和小程序层数据交互次数能够近可能的少。比如如下的情形:
23
+ * Father
24
+ * / | \
25
+ * / | \
26
+ * / | \
27
+ * son1 son2 son3
28
+ *
29
+ * 当父组件Father setState 引起 son1,son2,son3 UI发生改变的时候, 这3个组件增量的uiDes描述数据,需要传递到对应的小程序组件上,最不理想
30
+ * 情况是react层和小程序层交互3次,最初版本的alita(包括1.0.2版本以前)的确是这么做的。 自小程序2.4.0版本提供groupSetData之后,小程序提供了
31
+ * 批量设置数据的功能。现在我们可以通过类似如下的代码来批量的设置小程序数据
32
+ * father.groupSetData(() => {
33
+ * son1.setData(uiDes1)
34
+ * son2.setData(uiDes2)
35
+ * son3.setData(uiDes3)
36
+ * })
37
+ * 也就是说在更新的时候,我们利用groupSetData 可以做到本质上只交互一次。
38
+ *
39
+ * 下面我们在考虑一下Father组件初始建立的过程: Father初始的时候,在wxFather(Father组件对应的小程序组件实例,这里暂时称为wxFather)的ready
40
+ * 声明周期里,调用了 wxFather.setData(uiDes),完成之后,分别会触发wxSon1, wxSon2, wxSon3的 ready 并调用setData设置数据。 这里会调用4次setData,
41
+ * 我们有办法通过groupSetData,批量设置这里的数据吗?比较麻烦,不能简单的通过上面的方式使用groupSetData,因为只有当wxFather设置数据结束之后,son才有
42
+ * 机会ready
43
+ * 所以,alita先阶段采用的方案是:在组件初始阶段,会先构造出所以uiDes数据,包括子组件,孙组件等等
44
+ * const allUiDes = {
45
+ * ... // fatherUiDes
46
+ *
47
+ * son1R: {
48
+ * ... // son1UiDes
49
+ * },
50
+ *
51
+ * son2R: {
52
+ * ... // son2UiDes
53
+ * },
54
+ *
55
+ * son3R: {
56
+ * ... // son3UiDes
57
+ * }
58
+ * }
59
+ * 然后 father.setData(allUiDes) 。 初始结束以后,father组件不再持有子组件数据,以后的更新将通过groupSetData方式。
60
+ *
61
+ *
62
+ */
17
63
export class BaseComponent {
18
64
getWxInst ( ) {
19
65
let diuu = null
You can’t perform that action at this time.
0 commit comments