Skip to content

Commit 7f2e6d6

Browse files
committed
feat(wx-react): 添加BaseComponent 说明
1 parent 63fd81b commit 7f2e6d6

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

packages/wx-react/miniprogram_dist/AllComponent.js

+46
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,52 @@ import reactUpdate from './ReactUpdate'
1414
import shallowEqual from './shallowEqual'
1515
import getObjSubData from './getObjSubData'
1616

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+
*/
1763
export class BaseComponent {
1864
getWxInst() {
1965
let diuu = null

0 commit comments

Comments
 (0)