很多细心的开发者应该已经注意到了,
在 Taro 编译到小程序端后,组件的 constructor
与 render
默认会多调用一次,表现得与 React 不太一致。
这是因为,Taro 的组件编译后就是小程序的自定义组件,而小程序的自定义组件的初始化时是可以指定 data
来让组件拥有初始化数据的。开发者一般会在组件的 constructor
中设置一些初始化的 state
,同时也可能会在 render
中处理 state
与 props
产生新的数据,在 Taro 中多出的这一次提前调用,就是为了收集组件的初始化数据,给自定义组件提前生成 data
,以保证组件初始化时能带有数据,让组件初次渲染正常。
所以,在编码时,需要在处理数据的时候做一些容错处理,这样可以避免在 constructor
与 render
提前调用时出现由于没有数据导致出错的情况。