安装react-native-gridview后出现ListView已移除错误,未使用ListView求助
解决react-native-gridview触发ListView已移除的错误
这个问题其实很好理解——你虽然没直接写ListView代码,但你用的react-native-gridview这个库内部是基于React Native已经废弃并移除的ListView组件实现的,所以当你运行代码时,库的底层调用了已经不存在的ListView,就触发了这个错误。
React Native在较新的版本(大概从0.60开始)就正式移除了ListView,官方推荐用FlatList或SectionList来替代列表类需求,包括网格布局。这里给你两个可行的解决方案:
方案一:改用官方FlatList实现网格布局
FlatList本身支持numColumns属性来设置每行的列数,完全可以替代GridView的功能,而且是官方维护的组件,不会有兼容性问题。把你原来的GridView代码改成下面这样就行:
<FlatList data={this.state.dataList} numColumns={2} // 对应原来的itemsPerRow属性 renderItem={({ item }) => ( <View style={{ flex: 1, backgroundColor: '#8F8', borderWidth: 1, margin: 8 }}> <Image style={styles.imageThumbnail} source={{ uri: item.path }} /> </View> )} keyExtractor={(item, index) => index.toString()} // 必须添加,避免React的key警告 />
方案二:使用维护活跃的第三方网格库
如果你还是想用封装好的网格组件,可以选择像react-native-super-grid这类基于FlatList实现的库,它不会依赖老旧的ListView,兼容性更好。安装后用法和你原来的GridView类似,能快速替换。
总结一下:react-native-gridview应该是很久没有维护的老旧库了,已经跟不上React Native的版本更新,所以才会出现这种依赖已移除组件的错误,优先选择官方组件或者维护良好的第三方库是更稳妥的做法。
内容的提问来源于stack exchange,提问作者Sandip Singh
相关产品推荐
相关产品推荐

