areslabs / alita

一套把React Native代码转换成微信小程序代码的转换引擎工具。我们不造轮子,不发明新框架,只是提供工具把RN扩展到微信小程序端。
https://areslabs.github.io/alita
MIT License
1.96k stars 130 forks source link

Cannot read property 'props' of undefined; [Component] Lifetime Method Error @ npm/@areslabs/wx-react-native/wxComponents/WXFlatList/index#(anonymous) TypeError: Cannot read property 'props' of undefined #47

Closed yatessss closed 4 years ago

yatessss commented 4 years ago

A跳转到B页面,B页面setWxInstByUUID一个名为a000000Q的对象,B返回A页面时,B页面调用removeUUID移除了a000000Q对象,单移除后又调用了getWxInstByUUID(a000000Q),因为innerMap[key]为undefined所以报错,这里可以innerMap[key] || {} 做一下保护。为何在移除该uuid后还会get一次

yatessss commented 4 years ago

复现可以用Todo demo,复制一份Index页面命名为index2,从index跳到index2,再返回index就可以复现该问题,望可以解答疑惑。

ykforerlang commented 4 years ago

我明天看下

ykforerlang commented 4 years ago

@yatessss 修复了,把node_modules yarn.lock/package-lock.json 文件删除,重新安装一下依赖就可以了。

移除后重新调用的原因是: 移除调用的代码instanceManager.removeUUID(this.data.diuu), 而每次调用 this.data的时候,会在data里面注入一些其他数据,所以会getReactComp。 这个bug只会在FlatList, SectionList两个组件销毁的时候发生

yatessss commented 4 years ago

@ykforerlang 多谢。有没有具体的commit,想了解一下修复的过程,多谢啦

ykforerlang commented 4 years ago

commit