报错

VirtualizedLists should never be nested inside plain ScrollViews....

背景:

开发一个swipecell左滑删除的组件,使用了一个第三方库:react-native-swipe-list-view 该库基于reactnative的flatlist实现。
image.png

问题出现:

问题出现了,吭哧吭哧地接入这个包的时候发现页面报了个错误 :VirtualizedLists should never be nested inside plain ScrollViews....
image.png

报错分析:

嗯哼?赶紧去搜一把这是啥。Virtualized Lists也就是我们常说的虚拟列表,虚拟列表只让可视区域范围内的 Cell 渲染,超出可视区域范围内的 Cell 销毁来减少渲染带来的内存开销问题。而FlatList 和 SectionList 都是用的 Virtualized Lists。
当我们把 Virtualized List 放在 ScrollView 中,ScrollView 是要全部渲染的,那么 Virtualized List 无法计算出当前哪些 Cell 是展示在可视区域范围内而会选择渲染所有的 Cell,so ! Virtualized Lists的优势就显现不出来了。这个时候就会抛出上述警告。o(╥﹏╥)o

查找原因:

上述解释通俗地说就是flatlist不能嵌套ScrollView!rn页面是默认不滚动的,若想实现页面滚动需要使用scrollview包裹内容。检查了自己的代码没发现加了scrollview,最后的最后总算找到了taro中有disableScroll配置项,disableScroll默认配置了页面滑动(配置在config.ts页面中)也就是说taro外层是有一个scrollview包裹页面于是就导致上述问题发生。下次如果使用taro开发rn应用的时候就要注意这个问题啦!📢

总结:

先入为主会找不到解决的方向哦。完了。溜~

image.png


Twincos
52 声望0 粉丝

圆形战士