React-Native FlatList使用报错解决

968 阅读1分钟

使用react-native-timeline-flatlist时间轴组件的时候报错TypeError: undefined is not an object (evaluating 'props.getItem')

一开始一直以为是时间轴组件少了getItem的属性,一直在找怎么解决,找到的相关解决方案试了都没有用,最后仔细看了报错才发现是FlatList的错误问题,具体报错可见下图:

image.png

记得这是React-Native自带的组件,怎么我使用时间轴的时候才报错,带着探究的心思全局搜索了项目,结果发现没有一个列表是用FlatList写的......

问了问之前搭建项目的同事,给出的结果是之前FlatList报错,解决了好几天都没有解决,最后使用了@shopify/flash-list来解决列表的渲染问题。

一大堆脏话私下输出,自行脑补......

没办法,只能看看有没有方式能解决这个问题,毕竟解决完之后可以节省好多后续的时间。

说了一大堆废话,下面来正文部分: 尝试了很多解决方案,最终在React-Native的issue中,找到了本项目适用的临时解决方案,issue地址如下:FlatList 错误 ·问题 #34783 ·脸书/反应原生 ·GitHub的

constructor(props: Props<ItemT>) {
     super(props);
+    this.props = props;
     this._checkProps(this.props);
     if (this.props.viewabilityConfigCallbackPairs) {
       this._virtualizedListPairs =

在node_modules/react-native/Libraries/Lists/FlatList.js的423行,新增this.props = props;可以使项目正常运行。

如果JYM有其他解决方案也可以在评论区中讨论